我有一个简单的注册表单,可以在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
字段相同的时间戳。
答案 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
案例。