Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 用户没有属性会话->;德扬戈_Django_Authentication_Logout - Fatal编程技术网

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”。有没有其他方法可以不使用请求就注销用户??