📜  检查用户是否登录 django 装饰器 - Python (1)

📅  最后修改于: 2023-12-03 15:26:48.805000             🧑  作者: Mango

检查用户是否登录 Django 装饰器

在开发基于 Django 的 Web 应用时,经常需要检查用户是否登录。Django 提供了一个装饰器来实现这个功能,即 @login_required 装饰器。

使用方法

在需要检查用户登录状态的视图函数上加上 @login_required 装饰器即可,如下面的例子:

from django.contrib.auth.decorators import login_required

@login_required
def my_view(request):
    # your code here
    pass

如果用户没有登录,将会被重定向到登录页面。

自定义登录 URL

如果你想使用自定义的登录页面,可以在 settings.py 文件中进行配置:

LOGIN_URL = '/my_login/'

这样,当用户没有登录时,将会被重定向到 /my_login/ 页面。

自定义重定向地址

如果你想在用户登录后重定向到自定义的地址,可以在 settings.py 文件中进行配置:

LOGIN_REDIRECT_URL = '/my_redirect/'

这样,用户登录成功后将会被重定向到 /my_redirect/ 页面。

不使用重定向

如果你想在用户没有登录时直接返回一个 401 状态码,而不是对其进行重定向,那么可以通过 @user_passes_test 装饰器来实现:

from django.contrib.auth.decorators import user_passes_test

@user_passes_test(lambda u: u.is_authenticated)
def my_view(request):
    # your code here
    pass

在这个例子中,如果用户没有登录,将会返回一个 401 状态码。

结语

@login_required 装饰器是 Django 中非常有用的一个装饰器,它可以帮助我们方便地检查用户是否登录。同时,通过自定义登录 URL 和重定向地址,我们还可以进一步定制化这个功能。