首页 > 其他分享 >管理动作-提供中间页的动作

管理动作-提供中间页的动作

时间:2022-12-13 18:55:46浏览次数:49  
标签:HttpResponseRedirect 动作 提供 selected 视图 中间 pk ct

默认情况下,在执行完一个操作后,用户会被重定向回原来的变更列表页面。但是,有些操作,尤其是比较复杂的操作,需要返回中间页面。

参考Django官方文档

 

大多数时候,最好的做法是返回一个 HttpResponseRedirect,并将用户重定向到你编写的视图,在 GET 查询字符串中传递所选对象的列表。这样你就可以在中间页面上提供复杂的交互逻辑。例如,如果你想提供一个更完整的导出功能,你会想让用户选择一种格式,也可能是一个要包含在导出中的字段列表。最好的办法是写一个小的动作,重定向到你的自定义导出视图:

from django.contrib.contenttypes.models import ContentType
from django.http import HttpResponseRedirect

def export_selected_objects(modeladmin, request, queryset):
    selected = queryset.values_list('pk', flat=True)
    ct = ContentType.objects.get_for_model(queryset.model)
    return HttpResponseRedirect('/export/?ct=%s&ids=%s' % (
        ct.pk,
        ','.join(str(pk) for pk in selected),
    ))

正如你所看到的,这个动作相当简短;所有复杂的逻辑都属于你的导出视图。这将需要处理任何类型的对象,因此有 ContentType 的业务。

如何编写这个视图,就留给读者去练习。

标签:HttpResponseRedirect,动作,提供,selected,视图,中间,pk,ct
From: https://www.cnblogs.com/ldx-wsj/p/16979637.html

相关文章