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})
还是应该c
在Python文档示例(return render_to_response("a_template.html", c)
)中添加类似内容。或者,如果正确,它是否包含在request
var中?
并且,在不需要使用csrf时(因为我没有任何形式)。这是将值返回到模板的正确形式吗?
return render(request,'index.html',{'var':var_value})
问题答案:
使用render
快捷方式的要点是,它随后将自动运行所有上下文处理器。上下文处理器是有用的小功能,每次渲染模板时,它们都会向模板上下文中添加各种内容。并且有一个内置的上下文处理器已经为您添加了CSRF令牌。因此,如果您使用render
,则除了在模板中输出令牌外,无需执行其他任何操作。