Python-使用CSRF保护进行渲染


问题内容

我已经阅读了几篇有关Django中的csrf保护的文章,包括Django的文档,但是我仍然对如何正确使用它感到困惑。

最清晰的部分是HTML,但是Python的部分令人困惑。

的HTML

{% csrf_token %} 表格内

蟒蛇

c = {}
c.update(csrf(request))

在显示和请求信息时,您需要各种形式的信息,不是吗?


然后,如何将csrf保护包含在中return render()?这个对吗?

return render(request,'index.html',{'var':var_value})

还是应该cPython文档示例return render_to_response("a_template.html", c))中添加类似内容。或者,如果正确,它是否包含在requestvar中?


并且,在不需要使用csrf时(因为我没有任何形式)。这是将值返回到模板的正确形式吗?

return render(request,'index.html',{'var':var_value})


问题答案:

使用render快捷方式的要点是,它随后将自动运行所有上下文处理器。上下文处理器是有用的小功能,每次渲染模板时,它们都会向模板上下文中添加各种内容。并且有一个内置的上下文处理器已经为您添加了CSRF令牌。因此,如果您使用render,则除了在模板中输出令牌外,无需执行其他任何操作。