django - Django 中是否有与 login_required 等效的 logout_required ?

标签 django

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/

相关文章:

python - Django 在 runserver 之后卡住了

django - 在 gunicorn 中运行时如何从 django 应用程序获取覆盖率数据

django - 配置不当 : Error loading psycopg2 module: No module named cffi

mysql - 使用 django ORM 查询获取模型对象的所有相关详细信息?

python - 使用从数据库加载的 fixture 参数化 pytest

django - 在 Django 中使用模型时获取当前 site_id

django - 无法使用 Django 和 mongoDB 运行 syncdb

Django:从模型管理到文档的超链接

python - 组织大型 Django 项目的指南

django - kubernetes 中的定期数据库备份?