0

我正在 django 中制作登录表单。当我运行应用程序并填写用户名和密码字段时。页面总是重定向到一个条件(无论用户名是否正确)。

代码如下:

def home(request):

   if request.method == 'POST':
      username = request.POST.get('user_name')
      password = request.POST.get('password')
      user = authenticate(user_name=username, password=password)
      if user is not None:
        if user.is_active:
           login(request, user)
        # success
           return render_to_response('registration/main_page.html',{'form':login},context_instance=RequestContext(request))
        else:
         #user was not active
           return render_to_response('registration/q.html')
      else:
        # not a valid user
           return render_to_response('registration/home.html')

   else:
       # URL was accessed directly
           return render_to_response('registration/w.html')

它总是重定向到 home.html

else:
             #user was not active
              return render_to_response('registration/home.html')

为什么会发生?

4

2 回答 2

2

authenticate()函数username不需要user_name

尝试这个:user = authenticate(username=username, password=password)

另外,if user is not None:你可以写if user :

于 2012-08-29T11:32:08.707 回答
0

看来您的函数在这里返回一个 None 对象:

if user is not None

您可以添加打印语句来固定它,

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

      print username # what does it return?

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

      print user # what does it return?

      if user is not None:
          #...
于 2012-08-29T11:32:05.153 回答