2017-10-17 101 views
0

我是Django中的新成员,当我尝试使用csrf时,没有看到在html代码中生成的csrfmidderwaretoken。请帮助我的人了:) 打击是我的代码片段:Django 1.11不生成CSRF令牌

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') 

register.html: Template Html Code Link

而且显示的是: Appearance on site

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

+0

您应该使用'create_user'而不是'create',以便密码正确散列。创建对象后的'save()'调用不是必需的。 – Alasdair

+0

在'settings.MIDDLEWARE'中定义了'django.middleware.csrf.CsrfViewMiddleware'。 – Bijoy

回答

3

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

return render(request, 'register.html') 
0

render_to_response已弃用。请改用render()

return render('register.html')