0

我有一个简单的注册表单,可以输入这个函数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_userdate_joined

4

1 回答 1

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情况。

于 2013-07-08T17:51:12.450 回答