2017-07-12 16 views
-1

ジャンゴでピーズヘルプ利用CSRFトークン1.11django 1.11でcsrfトークンをインポートして使用する方法は? view.pyで

私は次のコードを使用します

from django.shortcuts import render_to_response, redirect 
from django.contrib import auth 
from django.views.decorators.csrf import csrf 

def login(request): 
    args = {} 
    args.update(csrf(request)) 
    if request.POST: 
      username = request.POST.get('username', '') 
      password = request.POST.get('password', '') 
      user = auth.authenticate(username=username, password=password) 
      if user is not None: 
        auth.login(request, user) 
        return redirect('/') 
      else: 
        args['login_error'] = 'Пользователь не найден'; 
        return render_to_response('login.html', args) 
    else: 
      return render_to_response('login.html', args) 

が、コンソール表示フォローエラーメッセージ:私は、同様の使用ジャンゴ1.8で

File "/home/kalinin/django/login/views.py", line 3, in from django.views.decorators.csrf import csrf ImportError: cannot import name 'csrf'

をコードですが、インポートcsrf:

from django.core.context_processors import csrf 

とアプリケーションnsが

するジャンゴのために自分のアプリケーションを実行して助けてください問題なく実行されている1.11テンプレートコンテキストプロセッサはdjango.template.context_processors.csrfに移動したので、輸入は以下のようになりジャンゴ1.8では

+0

Djangoは、[認証ビューおよびフォーム(https://docs.djangoproject.com/en/1.11/topics/auth/default/#module-django.contrib.auth.views)が付属しています。私はあなた自身で書くのではなく、これらを使うことをお勧めします。 – Alasdair

答えて

3

from django.template.context_processors import csrf 

ただし、ドンそれをまったくインポートする必要はありません。 render_to_responseを使用して停止、それは時代遅れです。代わりにrenderショートカットを使用してください。あなたがrenderショートカットを使用する場合

from django.shortcuts import render 

return render(request, 'login.html', args) 

は、その後、あなたはビューのcsrfトークンを心配する必要はありません、あなたは、この行を削除することができます。

args.update(csrf(request)) 
関連する問題