随笔 - 34  文章 - 0  评论 - 0  阅读 - 5666

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

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

参考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 的业务。

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

posted on   ldx-wsj  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示