📅  最后修改于: 2023-12-03 15:26:48.805000             🧑  作者: Mango
在开发基于 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
如果用户没有登录,将会被重定向到登录页面。
如果你想使用自定义的登录页面,可以在 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 和重定向地址,我们还可以进一步定制化这个功能。