全局名称'csrf'未在Django 1.10

时间:2017-02-15 07:48:21

标签: python-2.7 django-1.10

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 。请帮忙。

提前致谢。

1 个答案:

答案 0 :(得分:1)

Django内置模板上下文处理器已从包django.core移至django.template。所以你应该改变你的导入

from django.template.context_processors import csrf