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

Django自定义Admin站点报错:找不到'app_list'的反向解析

Django自定义AdminSite访问报错解决

问题场景

自定义AdminSite并注册模型后,访问/myadmin路径时出现反向解析错误,无法找到对应app_label的app_list路由。

代码示例

admin.py

from django.contrib.admin import AdminSite
from copy import copy
from django.apps import apps
from django.contrib import admin
from .models.badge import *

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

admin_site = MyAdminSite(name="myadmin")
admin_site.register(Badge)

urls.py

from dopplleApi.views.admin.common.adminSite import admin_site

app_name = 'dopplleApi'

urlpatterns = [ 
    #-- default
    path('', views.index, name='index'),

    #-- admin
    path('myadmin/', admin_site.urls),

    ...
]

错误信息

Reverse for 'app_list' with keyword arguments '{'app_label': 'dopplleApi'}' not found. 1 pattern(s) tried: ['admin/(?P<app_label>auth|authtoken)/$']

问题原因及解决方法

核心原因

自定义AdminSite默认复用Django官方admin的模板,而这些模板中的URL反转使用admin命名空间,但你的自定义站点命名空间是myadmin,导致反向解析时匹配了错误的路由规则。

解决方法

方法一:修改模板中的命名空间

  1. 在项目templates目录下创建admin文件夹,复制Django自带的admin模板(路径通常为django/contrib/admin/templates/admin)到该文件夹。
  2. 打开模板文件(如index.html、app_index.html等),将所有{% url 'admin:xxx' %}格式的代码替换为{% url 'myadmin:xxx' %}(myadmin为你创建AdminSite时指定的name参数值)。

方法二:复用默认admin命名空间

如果不需要同时使用官方默认admin站点,可将自定义AdminSite的name参数改为admin,直接覆盖默认站点:

# admin.py中修改
admin_site = MyAdminSite(name="admin")

此方法无需修改模板,原模板中的admin:命名空间会自动指向你的自定义站点。

方法三:检查模型所在APP配置

确保Badge模型所在的dopplleApiAPP已添加到settings.py的INSTALLED_APPS中:

# settings.py
INSTALLED_APPS = [
    ...
    'dopplleApi',
    ...
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 14:13:12