用户没有属性会话-> Django
Posted
技术标签:
【中文标题】用户没有属性会话-> Django【英文标题】:User has no attribute session -> 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.auth
的logout()
函数?
这有两个问题:首先你不需要用户实例来注销,正如 Yuji 指出的那样:其次你的用户已经在request.user
,为什么还要再查询呢?
【参考方案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 命令,所以我不能使用“请求”。有没有其他方法可以在不使用请求的情况下注销用户??以上是关于用户没有属性会话-> Django的主要内容,如果未能解决你的问题,请参考以下文章
在 Django 中,是不是可以从自定义标签中访问当前用户会话?