在被迫离开 PHP 并使用 Python 和 Django 工作之后,我遇到了一个小问题。
我想要做的是使用 Django 附带的内置用户身份验证。问题是,当我尝试使用“login()”函数时,它不会将用户保存在会话中,或者应该保存在任何地方。
我的代码如下所示:
@csrf_exempt
def dologin(request):
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
# Redirect to a success page.
return render_to_response('bsys/profile.html', {'message': 'Success!', 'user': request.user.get_full_name()})
else:
# Return a 'disabled account' error message
return render_to_response('bsys/login.html', {'message': 'Disabled!'})
else:
# Return an 'invalid login' error message.
return render_to_response('bsys/login.html', {'message': 'Sumthin Wong!'})
所以问题是当我运行时:
request.user.get_full_name()
它说:
Exception Type: AttributeError
Exception Value: 'AnonymousUser' object has no attribute 'get_full_name'
所以显然它没有登录用户。
当我做同样的事情,但使用:
user.get_full_name()
它可以工作,然后验证功能显然也可以正常工作。所以我猜想是关于 login() 的。
我还尝试过以管理员身份通过 admin-login 登录,然后从另一个视图使用相同的 request.user.get_full_name() ,它工作正常。
有什么想法可以解决这个问题吗?也许我只是错过了框架的一些重要部分。