Django 提供了非常有用的 @login_required
views.py
装饰器,您也可以将其作为函数 (login_required()
) 调用urls.py
。它将未经身份验证的用户重定向到 settings.LOGIN_URL
。
@logout_required
是否有类似的装饰器,以便仅在用户未经身份验证时才呈现 View ,否则重定向到 settings.LOGOUT_URL
或等效内容?
最佳答案
据我所知,没有内置的,因为这并没有太多限制:用户可以简单地注销并访问 View ,因此通常只会使网站不太方便。
如果您确实想要这样做,您可以实现一个,其方式与 @login_required
is implemented [GitHub] 类似。 。例如:
from django.conf import settings
from django.contrib.auth.decorators import user_passes_test
def logout_required(function=None, logout_url=settings.LOGOUT_URL):
actual_decorator = user_passes_test(
lambda u: not u.is_authenticated,
login_url=logout_url
)
if function:
return actual_decorator(function)
return actual_decorator
您需要在设置中自行定义 LOGOUT_URL
,否则访问 LOGOUT_URL
将失败。
关于django - Django 中是否有与 login_required 等效的 logout_required ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57663789/