[英]How import and use csrf token in django 1.11?
豌豆幫助在Django 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)
但是控制台顯示跟隨錯誤消息:
django.views.decorators.csrf中的文件“ /home/kalinin/django/login/views.py”,第3行,導入csrf ImportError:無法導入名稱“ csrf”
在Django 1.8中,我使用類似的代碼,但是導入csrf:
from django.core.context_processors import csrf
並且應用程序運行沒有問題
請幫助運行我的Django 1.11應用程序
在Django 1.8中,模板上下文處理器已移至django.template.context_processors.csrf
,因此導入為:
from django.template.context_processors import csrf
但是,您根本不需要導入它。 停止使用render_to_response
,這已經過時了。 請改用render
快捷方式。
from django.shortcuts import render
return render(request, 'login.html', args)
使用render
快捷方式時,無需擔心視圖中的csrf
令牌,您可以刪除此行。
args.update(csrf(request))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.