Pease 帮助在 django 1.11 中使用 csrf token
在 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)
但是控制台显示如下错误信息:
File "/home/kalinin/django/login/views.py", line 3, in from django.views.decorators.csrf import csrf ImportError: cannot import name '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
快捷方式时,您无需担心 View 中的csrf
token ,您可以删除这一行。
args.update(csrf(request))
关于python - 如何在 Django 1.11 中导入和使用 csrf token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45054699/