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