0

我的模板如下:

  <div id="divLogin">
                {% block login %}
                <form action="/login" method="post">
                    {% csrf_token %}
                    <label for="id_name"></label><input type="text" name="email" id="id_name" placeholder="Your Email">
                    <label for="id_pass"></label><input type="password" name="password" placeholder="Your Password">
                    <input type="submit" id="btnLogin" value="Log In" class="btn">
                </form>
                {% endblock %}
            </div>

我已经在模板中添加了 {% csrf_token %},我的登录视图是

def login_view(request):
    if request.method == 'POST':
        useremail=request.POST['email']
        password=request.POST['password']
        try:
            user=User.objects.get(email=useremail)
            if user.check_password(password):
                uAuth=authenticate(username=user.username,password=password)
                login(request,uAuth)
                return render_to_response("blog.html",{'loginuser':user},context_instance=RequestContext(request))
        except User.DoesNotExist:
            return redirect('/')
    return redirect('/')

即使我用过render_to_responseRequestContext我仍然有错误。有一件事很连贯,我在 login_view 方法中设置了一个断点,但是在它进入 login_view 方法之前 csrf 错误指出。所以这个方法没有回应?

我的代码有什么问题吗?

我已经在我的 settings.py 中添加django.middleware.csrf.CsrfViewMiddlewareMIDDLEWARE_CLASSES

4

1 回答 1

0

您必须在post.

重定向到呈现模板的视图。

def login_view(request):
    if request.method == 'POST':
        useremail=request.POST['email']
        password=request.POST['password']
        try:
            user=User.objects.get(email=useremail)
            if user.check_password(password):
                uAuth=authenticate(username=user.username,password=password)
                login(request,uAuth)
                return HttpResponseRedirect('/someurl')
        except User.DoesNotExist:
             return redirect('/')
    else:
        return render_to_response('login.html',context_instance=RequestContext(request))


def someurl(request):
    if request.method == 'GET':
         render_to_response("blog.html",    
               {'loginuser':user},context_instance=RequestContext(request))
于 2013-07-27T05:33:42.253 回答