我使用的是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():