gpt4 book ai didi

python - Django 自定义中间件渲染没有 csrf token

转载 作者:太空宇宙 更新时间:2023-11-04 03:54:43 31 4
gpt4 key购买 nike

我的自定义中间件返回呈现的响应(带有 RequestContext )。

这似乎导致了 csrf_token上下文变量设置为 NOTPROVIDED ( Djangos sentinel value for not provided ), 和 {% csrf_token %}没有输出,如the CSRF middleware is called on process_view ,我假设在这种情况下我们永远无法运行。

中间件呈现的响应并不复杂,它是一种很少使用的特殊情况,但是更改语言需要 CSRF token ,因为这是对 Djangos 内置的 POST 请求 set_language查看。

解决这个问题的最佳方法是什么?

最佳答案

process_request 中没有可用的 csrf token 的原因是 token 设置在 process_view 中csrf 中间件,在每个中间件的 process_request 之后运行,因此您需要将代码移至 process_view相反:

def process_view(self, request, view_func, view_args, view_kwargs):
if some_clause:
return render(request, 'foo.html', {'foo': 'bar'})

return view_func(request, view_args, view_kwargs)

关于python - Django 自定义中间件渲染没有 csrf token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19378440/

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