【问题标题】:Django 1.11 CSRF token is not generated未生成 Django 1.11 CSRF 令牌
【发布时间】:2017-10-17 18:10:16
【问题描述】:

我是 Django 新手,当我尝试使用 csrf 时,我没有看到 csrfmidderwaretoken 在 html 代码中生成。请有人帮帮我:) 打击是我的代码片段:

urls.py:

`url(r'^register/$', register, name="register"),`

views.py:

def register(request):
        if request.method == 'POST':
            username = request.POST['username']
            password = request.POST['password']
            if not (User.objects.filter(username=username)):
                User.objects.create(username=username, password=password)
                User.save()
                return render(request, "register.html", {"status":True})
        else:
            return render_to_response('register.html')

注册.html:

显示的是:

Django 1.11,Python3.6。 有人可以帮我检查一下吗,非常感谢。

【问题讨论】:

  • 您应该使用create_user 而不是create,这样密码才能正确散列。创建对象后的save() 调用不是必需的。
  • 在您的settings.MIDDLEWARE 中定义了django.middleware.csrf.CsrfViewMiddleware

标签: python django csrf


【解决方案1】:

不要在最后一行使用render_to_response。它已经过时了。将其更改为 render 以便上下文处理器(包括 csrf)工作。

return render(request, 'register.html')

【讨论】:

    【解决方案2】:

    render_to_response 已弃用。请改用render()

    return render('register.html')
    

    【讨论】:

      猜你喜欢
      • 2014-08-31
      • 2010-12-20
      • 2019-04-08
      • 2017-05-27
      • 2014-01-21
      • 1970-01-01
      • 2013-08-11
      • 2016-08-03
      • 2015-05-18
      相关资源
      最近更新 更多