获取登录的用户详细信息时出错



我使用的是Django 2.2.6。

登录代码

class loginController(View):
def post(self, request):
username = request.POST.get('username')
password = request.POST.get('password')
userobj = authenticate(username = username, password = password)
if(userobj != None):
login(request, userobj)
return redirect('myprofileapp:profile')

用户通过身份验证后,导航到配置文件页面。当这一行执行if(request.user.is_authenticated):时,我得到一个错误。

class accountController(View):
def get(self, request):
if(request.user.is_authenticated):
return HttpResponse(request.user)

"User"对象不可迭代

编辑1

class accountController(View):
def get(self, request):
if(request.user.is_authenticated):
print(request.user.username)
return HttpResponse("ok")
else:
return HttpResponse("not ok")

没有打印任何内容。刚刚好,上面的代码打印出来了。

这是错误的:

return HttpResponse(request.user)

您可以将字符串传递给HttpResponse。您正在传递作为对象的request.user。由于用户名是一个字符串,您可以执行以下操作:

return HttpResponse( request.user.username)

基本上,传递给HttpResponse的任何字符串都将显示在浏览器中。你通过"ok",ok将被打印,你通过"Pankaj",Pankaj将被打印。您传递request.user.username,这是一个字符串,该用户名将作为响应显示在浏览器中。

print中的某些内容打印到django控制台,它不会打印到web浏览器。

您不应该使用return HttpResponse(request.user),因为它不是一个可迭代的对象。它只是AuthenticationMiddleware的一个SimpleLazyObject。

而不是if(request.user.is_authenticated):尝试此if request.user.is_authenticated():

相关内容

最新更新