【问题标题】:User has no attribute session -> Django用户没有属性会话-> Django
【发布时间】:2012-01-14 16:29:30
【问题描述】:

查询我的数据库以获取用户以便我可以将其注销,但出现上述错误。

def logout(request):
    id = request.session["user_id"]
    user = get_object_or_404(User, pk=id)
    auth.logout(user)

我并不是说用户有一个会话属性,我告诉它它的主键等于会话中持有的数字。

【问题讨论】:

  • 你为什么要定义一个logout()函数而不是仅仅使用来自django.contrib.authlogout()函数?
  • 这有两个问题:首先你不需要用户实例来注销,正如 Yuji 指出的那样:其次你的用户已经在request.user,为什么还要再查询呢?

标签: django authentication logout


【解决方案1】:

为防止任何不必要的递归,请避免将视图命名为与从“django.contrib.auth”导入的注销函数相同的名称。

代码应如下所示:

from django.contrib.auth import logout
from django.shortcuts import redirect


def user_logout(request):
    logout(request)
    return redirect("Name of url pattern ")

【讨论】:

    【解决方案2】:

    auth.logout() 期望 request 不是用户实例。假设你说的是django.contrib.auth

    https://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.logout

    【讨论】:

    • 我正在编写一个 django-admin 命令,所以我不能使用“请求”。有没有其他方法可以在不使用请求的情况下注销用户??
    猜你喜欢
    • 2019-05-03
    • 2016-09-17
    • 2013-05-27
    • 2021-02-22
    • 2019-05-11
    • 2017-01-11
    • 2012-06-01
    • 2023-03-26
    • 2011-12-22
    相关资源
    最近更新 更多