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

Dan*_*ble 4 django

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

Yeo*_*Yeo 5

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

如果您想尝试解决问题,则有针对多个管理站点的特定文档

以下是主要从官方文档复制的示例解决方案

解决方案示例:

# 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),
]
Run Code Online (Sandbox Code Playgroud)

# 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')
Run Code Online (Sandbox Code Playgroud)

倒车

reverse('myadminbasic:index')    # /basic-admin/
reverse('myadminadvanced:index') # /advanced-admin/
Run Code Online (Sandbox Code Playgroud)