【问题标题】:DJango user not logging outDJango 用户未退出
【发布时间】:2020-08-21 08:49:16
【问题描述】:

我是 DJango 的新手,我正在尝试进行用户身份验证。我的登录工作正常,但我的用户没有退出。

我的注销视图是:

from django.contrib.auth import logout
from django.contrib.auth.models import User

class LogoutView(generic.View):
    @staticmethod
    def get(request):
        if User.is_authenticated:
            # Debug statement
            print('if')
            logout(request)
            return redirect('login')
        else:
            return redirect('index')

我的 url 工作正常,因为当我转到 /logout/ 时,我的调试语句会执行

但是if User.is_authenticated: 总是返回一个对象(true)。

我该如何解决这个问题。谢谢

【问题讨论】:

  • User 是类,而不是当前用户。你想要request.user.is_authenticated
  • Django 自带了一个LogoutView。使用它比自己编写更容易。

标签: python django python-3.x django-views


【解决方案1】:

User.is_authenticated 不是你应该做的。用户是类,显示它将具有在您的请求中显示的对象,这些对象已经存在,并且与正在服务的用户无关。而request是用户携带很多东西的对象,其中一个是user

应该是:

request.user.is_authenticated:

【讨论】:

  • 谢谢,成功了。你能告诉我如何在模板中使用相同的 if 语句吗?
  • 由于您已经在模板中请求,您可以简单地执行以下操作:{% if user.is_authenticated %}
猜你喜欢
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-09
  • 2012-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多