注册后Django登录失败

时间:2013-07-08 17:47:34

标签: python django django-authentication

我有一个简单的注册表单,可以在views.py

中提供此功能
from django.contrib.auth import authenticate, login
from django.contrib.auth.models import User

def registerNewUser(request):
  newUser = User.objects.create_user(request.POST["username"], request.POST["email"], request.POST["password"])
  newUser.last_name = request.POST["lastName"]
  newUser.first_name = request.POST["firstName"]

  print newUser.last_name

  user = authenticate(username = request.POST["username"], password = request.POST["password"])
  print user 

  if user is not None:
    if user.is_active:
      login(request, user)
      print "Login Successful"
  else:
    return HttpResponse(simplejson.dumps({"login" : "failed"}))

我可以看到新记录被插入AuthUser表中,但是登录失败并且HttpResponse JSON错误消息正在返回给客户端。另外,

print user

返回无

为什么?

最后一点:last_login表的auth_user字段显示与date_joined字段相同的时间戳。

1 个答案:

答案 0 :(得分:1)

如果登录成功,您的视图对客户端不会return任何内容。 django 中的视图必须返回HttpResponse个对象。

if user is not None:
    if user.is_active:
        login(request, user)
        print "Login Successful"
        # (1) Missing return statement here
    else:
        return HttpResponse(simplejson.dumps({"login" : "failed"}))

# (2) Execution flow falls through to here

但是你提到邮件是JSON格式的......你提交了你视图的所有代码吗?

执行流很可能“落到”if user is not None语句之后的代码 - 我认为这是User is None案例。