NameError at /todos/accounts/register/
global name 'csrf' is not defined
Request Method: GET
Request URL: http://localhost:8000/todos/accounts/register/
Django Version: 1.10.5
Exception Type: NameError
Exception Value:
global name 'csrf' is not defined
Exception Location: /home/rahul/Desktop/apps/todolist/todos/views.py in register, line 37
Python Executable: /usr/bin/python
Python Version: 2.7.6
Python Path:
views.py中的错误:
from django.shortcuts import render
from django.http import HttpResponse
from .models import Todo
from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect
from django.contrib.auth.forms import UserCreationForm
#from django.core.context_processors import csrf
def index(request):
todos = Todo.objects.all()[:10]
context = {
'todos' : todos
}
return render(request, 'index.html', context)
def details(request, id):
todo = Todo.objects.get(id=id)
context = {
'todo' : todo
}
return render(request, 'details.html', context)
def register(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/accounts/register/complete')
else:
form = UserCreationForm()
token = {}
token.update(csrf(request))
token['form'] = form
return render_to_response('registration/registration_form.html', token)
def registration_complete(request):
return render_to_response('registration/registration_complete.html')
目前我的代码显示全局名称'csrf'未定义。要克服此错误,如果我从django.core.context_processors导入csrf 取消注释,则显示 context_processors module not found 。请帮忙。
提前致谢。
答案 0 :(得分:1)
Django内置模板上下文处理器已从包django.core
移至django.template
。所以你应该改变你的导入
from django.template.context_processors import csrf