Django 用户没有属性会话->;德扬戈
查询我的数据库以获取一个用户,这样我就可以将他们注销,但会出现上述错误Django 用户没有属性会话->;德扬戈,django,authentication,logout,Django,Authentication,Logout,查询我的数据库以获取一个用户,这样我就可以将他们注销,但会出现上述错误 def logout(request): id = request.session["user_id"] user = get_object_or_404(User, pk=id) auth.logout(user) 我并不是说用户有会话属性,而是告诉它它的主键等于会话中的数字。auth.logout()期望的是请求不是用户实例。假设您谈论的是django.contrib.auth 为防止任何不必要
def logout(request):
id = request.session["user_id"]
user = get_object_or_404(User, pk=id)
auth.logout(user)
我并不是说用户有会话属性,而是告诉它它的主键等于会话中的数字。auth.logout()
期望的是请求
不是用户实例。假设您谈论的是django.contrib.auth
为防止任何不必要的递归,请避免将视图命名为与从“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 ")
为什么您要定义一个
logout()
函数,而不是仅仅使用django.contrib.auth
中的logout()
函数?这有两个问题:首先,正如Yuji指出的,您不需要用户实例来注销;其次,您的用户已经在请求中了,那么为什么还要再次查询它呢?我正在编写一个django管理命令,所以我不能使用“request”。有没有其他方法可以不使用请求就注销用户??