You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django二级Admin站点链接跳转至主Admin站点问题如何解决?

问题原因

Django Admin 内部生成链接时,会以 AdminSite 实例的name属性作为命名空间反向解析 URL。你当前将自定义 Admin 站点挂载在设置了app_name = 'dispatch'的URL模块下,相当于给Admin的所有URL额外增加了一层父命名空间dispatch,但Admin内部解析URL时不会自动带上这层前缀,就会解析到根路径下的URL规则,最终跳转到默认主Admin站点。

解决方法

方案1(推荐):调整URL挂载规则

直接在项目根urls.py中挂载自定义Admin站点,避免嵌套多余的父命名空间:

  1. 先删除dispatch/urls.py中path('admin/', admin.dispatch_admin_site.urls)这行配置
  2. 修改根project/urls.py配置:
from dispatch.admin import dispatch_admin_site # 导入你自定义的Admin站点实例

urlpatterns = [
    # 直接挂载自定义Admin,不要套在dispatch的include规则里
    path('dispatch/admin/', dispatch_admin_site.urls),
    path('dispatch/', include('dispatch.urls')),
    path('admin/', admin.site.urls),
]

方案2:重写AdminSite的反向解析方法

如果一定要把自定义Admin放在dispatch/urls.py中,就重写DispatchAdminSite的reverse方法,强制带上父命名空间前缀:

from django.urls import reverse

class DispatchAdminSite(admin.AdminSite):
    def reverse(self, name, *args, **kwargs):
        return reverse(f'dispatch:{name}', *args, **kwargs)

两种方案修改完成后,清空浏览器缓存重新访问即可,站点内的链接会自动生成正确的/dispatch/admin/...路径。

内容的提问来源于stack exchange,提问作者bdoubleu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 09:15:01