gpt4 book ai didi

python - ModelAdmin 中的 Django csrf_token

转载 作者:太空宇宙 更新时间:2023-11-03 16:57:55 26 4
gpt4 key购买 nike

我想将表单添加到 ModelAdmin 的列表显示中,但无法正确渲染 csrf_token。我正在使用 django 1.6。我的代码如下所示:

class ApplicationAdmin(admin.ModelAdmin):
model = Application
list_display = ('applicant', 'approve_or_reject')

def approve_or_reject(self, obj):
return '<form method="post" action="/applications/approvals">{% csrf_token %}<input type="submit" class="btn-approve" name="approve" value="Approve"/></form>'

approve_or_reject.short_description = 'Approve/Reject'
approve_or_reject.allow_tags = True

admin.site.register(Application, ApplicationAdmin)

我不断收到错误:

KeyError at /management/application/ '% csrf_token %'

如何正确传递csrf_token?

最佳答案

list_display 中使用的模型管理方法(如 approve_or_reject)应返回文本。如果将输出标记为安全,则可以返回 HTML。但是,返回值不像 Django 模板语言那样处理,因此使用 csrf token 标记不起作用。

approve_or_reject 方法中获取 csrf token 并不容易,因为您无权访问请求对象。另一个问题是整个变更列表已经包装在表单标签中(id="changelist-form"),并且表单标签不应该嵌套。

另一种方法是将“批准或拒绝”功能实现为 admin action 。用户界面会有所不同,但可能已经足够好了。

关于python - ModelAdmin 中的 Django csrf_token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35270192/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com