【问题标题】:Django Management command for Activating/Deactivating admin site用于激活/停用管理站点的 Django 管理命令
【发布时间】:2020-01-31 14:20:01
【问题描述】:

我想知道是否可以使用自定义管理命令'激活''停用' 管理站点,我的意思是停用是评论在主 urls.py 文件中包含 admin.site.urls 路径的行。 或者如果有更好的方法来做到这一点。

【问题讨论】:

    标签: django python-3.x django-admin


    【解决方案1】:

    我认为最好的方法是编写自定义中间件。 您可以检测当前请求是否是对管理站点的请求(例如 request.path.startswith('/admin')),如果您禁用管理页面,则返回 404 错误。

    【讨论】:

    • 您建议我们如何在生产(激活/停用)部分控制它?我们可以使用自定义管理命令还是管理站点本身?
    • 您应该在数据库中创建一些模型用于存储实时配置。使用名为 ADMIN_SITE_ENABLED 且具有 True/False 值的键添加项目。每次,当您中间件检测到 /admin 页面的请求时,您需要向数据库发出请求并检查您当前的配置,如果您的配置为 False,则返回 404 错误。在此之后只需要您 - 为数据库中的开/关配置项创建自定义管理命令。
    【解决方案2】:

    您希望何时停用管理员网址?例如,如果您想停用管理站点 url 以进行生产,您可以在 settings.DEBUG 为 False 时向 urls.py checkin 添加一个控件。

    urlpatterns = [
        ...
    ]
    if not settings.DEBUG:
        urlpatterns += [
            path('basic-admin/', basic_site.urls)
        ]
    

    【讨论】:

    • 我要创建的是一个命令,我可以使用(在生产中)激活和停用管理站点,例如,如果我想使用管理界面,我只需 ssh 到服务器并执行该命令和管理站点将可用,之后我可以使用另一个命令(或具有不同参数的相同命令)停用它
    猜你喜欢
    • 1970-01-01
    • 2011-11-21
    • 2012-05-04
    • 1970-01-01
    • 2011-09-23
    • 2015-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多