【问题标题】:Changing default admin url causing error in Django 1.4 site更改默认管理员 url 导致 Django 1.4 站点中的错误
【发布时间】:2013-01-23 15:15:44
【问题描述】:

我想将 django admin 的默认 url 从 /admin 更改为 /djadmin,以便我可以将 /admin 用于我自己的目的。

到目前为止,我所做的只是更新 urls.py 文件,将管理 url 更改为

url(r'^djadmin/', include(admin.site.urls)),

然后添加我自己的

(r'^admin/', include('my_app.admin_urls')),

但是,当我现在导航到 /admin 时,出现以下错误

Forbidden

You do not have staff privileges.

因为我不需要这个参数,所以我假设它来自内部 django 检查。如果我将用户更改为检查is_staff 标志,那么它可以正常工作并重定向到我的管理页面。

每当我导航到管理网址时,我还需要做些什么来阻止 Django 检查is_staff 标志吗?

【问题讨论】:

    标签: django django-admin


    【解决方案1】:

    is_staff 标志被包装在 Django 管理站点的代码中,因为它旨在将该接口的使用限制为仅对选定用户的子组(管理网站内容的用户)。删除它的唯一方法是子类化 Django 的管理站点,因此是您自己的自定义站点。

    有关管理站点自定义,请参阅 the official documentation 或其他答案,例如 the one I've posted previously。在 AdminSite 子类中,您必须使用以下命令覆盖 has_permission 方法:

    def has_permission(self, request):
       return request.user.is_active
    

    您还需要使用自定义管理表单 (AdminSite.login_form) 并修改 base.html 模板,删除一对 if 语句中有关 is_staff 的引用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-12
      • 1970-01-01
      • 2010-11-01
      • 2016-11-21
      • 2021-12-19
      • 1970-01-01
      • 1970-01-01
      • 2019-03-18
      相关资源
      最近更新 更多