2017-10-17 4 views
0

私はDjangoで新しく、csrfを使用しようとすると、csrfmidderwaretokenがhtmlコードで生成されるのを見なかった。誰かが私を助けてください:) 打撃が私のコードのクリップです: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'の代わりに' create_user'を使うべきです。オブジェクトを作成した後の 'save()'呼び出しは必須ではありません。 – Alasdair

+0

あなたの 'settings.MIDDLEWARE'に' django.middleware.csrf.CsrfViewMiddleware'が定義されています。 – Bijoy

答えて

3

最後の行にrender_to_responseを使用しないでください。それは時代遅れです。コンテキストプロセッサ(csrfを含む)が機能するように、それをrenderに変更してください。

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

render_to_responseは推奨されていません。代わりにrender()を使用してください。

関連する問題