Python-Django-activate()返回None

Python-Django-activate()返回None,python,django,web-applications,heroku,login,Python,Django,Web Applications,Heroku,Login,好的,我正在尝试用Django创建一个登录 从views.py: from django.shortcuts import * from forms import UserRegistrationForm from django.contrib.auth import authenticate, login from django.core.mail import send_mail from django.conf import settings import pprint import ut

好的,我正在尝试用Django创建一个登录

从views.py:

from django.shortcuts import *
from forms import UserRegistrationForm
from django.contrib.auth import authenticate, login
from django.core.mail import send_mail
from django.conf import settings
import pprint
import utils
import models
from django.http import HttpResponse
import views
from django.conf.urls import patterns, url    

def login_user(request):
    state = "Please log in below..."
    username = password = ''

    if request.POST:
        username = request.POST.get('username')
        password = request.POST.get('password')

        user = authenticate(username=username, password=password)

        if user is not None:
            if not user.is_verified:
                state = "Please check your e-mail to verify your account."
            elif user.is_active:
                login(request, user)
                state = "You're successfully logged in!"
            else:
                state = "Your account is not active, please contact the site admin."
        else:
            state = "Your username and/or password were incorrect."

        return render_to_response('myapp/dashboard.html', {'state': state}, RequestContext(request))

    else:
        return render_to_response('myapp/login.html', RequestContext(request))
我的登录模板(login.html):

当我登录我的管理站点时,我看到用户:

用户名:尼克 密码:尼克的哈希版本

当我插入一个中断(使用PBD)时,我能够看到应用程序通过登录用户视图

> ...myapp/myapp/views.py(52)login_user()
-> state = "Please log in below..."
(Pdb) n
> ...myapp/myapp/views.py(53)login_user()
-> username = password = ''
(Pdb) print username
*** NameError: name 'username' is not defined
(Pdb) n
> ...myapp/myapp/views.py(55)login_user()
-> if request.POST:
(Pdb) print username

(Pdb) n
> ...myapp/myapp/views.py(56)login_user()
-> username = request.POST.get('username')
(Pdb) print username

(Pdb) n
> ...myapp/myapp/views.py(57)login_user()
-> password = request.POST.get('password')
(Pdb) print username
nick
(Pdb) n
> ...myapp/myapp/views.py(59)login_user()
-> user = authenticate(username=username, password=password)
(Pdb) print password
nick
(Pdb) n
> ...myapp/myapp/views.py(61)login_user()
-> if user is not None:
(Pdb) print user
None
这表明它获取用户名“nick”和密码“nick”(我设置帐户时使用的设置),但是我遇到的问题是,authenticate仍然返回None,这意味着某些设置不正确/不起作用

在登录用户查看后,“状态”会打印“您的用户名和/或密码不正确”。如views.py中所述

如果有人能帮助我,我将不胜感激

(也在G+上回复)

从您的pdb会话:

(Pdb) print password
nick
如果是这样的话,那就有问题了,你不同意吗? 此外,我将取消VAR的初始化,而是执行以下操作:

username = request.POST.get('username')
password = request.POST.get('password')
if username and password:
    # Your code

无论如何,request.POST.get都可以工作(POST总是初始化为QueryDict),如果找不到键,get()将返回None,因此不会出现任何错误,而且您可能更容易看到发生了什么。

在实现您自己的登录页面之前,您是否尝试过使用内置登录页面并测试它是否有效?
(Pdb) print password
nick
username = request.POST.get('username')
password = request.POST.get('password')
if username and password:
    # Your code