Django如何判断用户是否处于登录状态?

首先描述一下页面的问题:

  1. 页面有一个导航栏,可以根据用户是否登录来展示登录或者登出按钮(目前使用is_authenticated属性判断)
  2. 页面有一个显示全部用户的选项,用于展示所有已创建的用户,点击用户可查看用户的详细信息。

点击查看某一用户的信息并不代表这个用户已经登录,但是如果使用is_authenticated来检验用户,根据django的官网描述,所有的用户实例都会返回True,那么导航栏也会做相应改变。这不是我需要的。
请问有什么方法能够判断一个用户是否处于登录状态?

另外我正在尝试使用session,这是视图函数:

def user_login(request):

    username = request.POST["username"]
    password = request.POST["password"]
    user = authenticate(request, username=username, password=password)
    if user is not None:
        request.session["username"] = username
        login(request, user)
        ...
    

这个登录视图使用的模板是login.html,但是我希望能在主页的模板base.html中使用session,这样要如何实现呢?

阅读 8.4k
2 个回答

模板中可以直接使用request对象的,比如request.user。
如果不能的话需要settings中进行配置TEMPLATES的OPTIONS.context_processors增加django.template.context_processors.request

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(DIRNAME, "templates")],
        'APP_DIRS': True,
        'OPTIONS': {
            'debug': DEBUG,
            'context_processors': [
                'django.template.context_processors.request',
            ],
        },
    },
]
推荐问题