我正在使用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)
“用户”对象不可迭代
编辑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")
不打印任何内容。好的,可以在上面的代码中打印出来。
答案 0 :(得分:0)
您不应return HttpResponse(request.user)
,因为它不是可迭代的对象。它只是AuthenticationMiddleware的SimpleLazyObject。
答案 1 :(得分:0)
这是错误的:
return HttpResponse(request.user)
您可以将字符串传递给HttpResponse
。您正在传递request.user
,它是一个对象。由于用户名是字符串,因此您可以执行以下操作:
return HttpResponse( request.user.username)
基本上,您传递给HttpResponse
的任何字符串都将显示在浏览器中。您通过“确定”,确定将被打印,您通过“ Pankaj”,Pankaj被打印。您传递request.user.username
这是一个字符串,该用户名将在浏览器中显示为响应。
在print
中放置内容会打印到django控制台,而不会打印到Web浏览器。
答案 2 :(得分:-2)
代替if(request.user.is_authenticated):
试试这个if request.user.is_authenticated():