当前位置:  开发笔记 > 后端 > 正文

Django - CSRF令牌生成 - render_to_response vs render

如何解决《Django-CSRF令牌生成-render_to_responsevsrender》经验,为你挑选了1个好方法。



1> Alasdair..:

推荐的方法是使用render而不是render_to_response.代码更简单,CSRF令牌将起作用,因为render它将使用请求上下文来呈现模板.

return render(request, 'registration/register.html', {'form': RegistrationForm()})

文档建议您不要使用render_to_response.在Django 1.10之前,您可以手动传递a RequestContext作为第三个参数,但这在Django 1.10+中是不可能的.您使用a RequestContext作为第二个参数是不正确的 - 第二个参数应该是常规字典.

最后,请注意,当表单无效时,您不会返回响应.您可以通过稍微调整代码来解决此问题:

if request.method == 'POST':
    form = RegistrationForm(request.POST)
    if form.is_valid():
        ...
        return HttpResponseRedirect('/register_success/')
else:
    form = RegistrationForm()
return render(request, 'registration/register.html', {'form': form}) 

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有