如何反向匹配多个Django管理站点(自定义管理站点命名空间)

时间:2016-01-27 13:47:16

标签: django

当您扩展AdminSite以创建另一个管理网站时,您如何能够反向匹配每个网站?似乎admin命名空间是硬编码的reverse('admin:index'),有没有办法提供自定义命名空间?

1 个答案:

答案 0 :(得分:4)

您可能会对django中的命名空间感到困惑。如果您有兴趣澄清这种混淆,可以阅读讨论here

如果您想尝试解决问题,则有多个管理网站specific documentation

  

以下是大部分从官方文档中复制的示例解决方案

示例解决方案:

# urls.py
from django.conf.urls import url
from .sites import basic_site, advanced_site

urlpatterns = [
    url(r'^basic-admin/', basic_site.urls),
    url(r'^advanced-admin/', advanced_site.urls),
]

# sites.py
from django.contrib.admin import AdminSite

class MyAdminSite(AdminSite):
    site_header = 'Monty Python administration'

basic_site = MyAdminSite(name='myadminbasic')
advanced_site = MyAdminSite(name='myadminadvanced')

倒车

reverse('myadminbasic:index')    # /basic-admin/
reverse('myadminadvanced:index') # /advanced-admin/