我正在尝试添加一个自定义/覆盖的 AdminSite,因为我需要一个不同的 Admin 模板。我按照文档所说的做了一切: https ://docs.djangoproject.com/en/3.0/ref/contrib/admin/#overriding-the-default-admin-site
项目/admin.py
from django.contrib.admin import AdminSite
class NewAdminSite(AdminSite):
index_template = 'admin/index.html'
site_header = 'Administration'
admin_site = NewAdminSite(name='newadmin')
项目/apps.py
class NewAdminConfig(AdminConfig):
default_site = 'project.admin.NewAdminSite'
我没有任何其他应用程序,项目是我的根目录我将 admin_site.urls 而不是 admin.site.urls 添加到 urls.py,在 apps.py 中创建了一个自定义 AdminConfig,并将新的 AdminConfig 添加到已安装的应用程序中django.contrib.admin 的。
问题是我现在收到了这个:
AdminSiteClass = import_string(apps.get_app_config('admin').default_site)
文件“C:\Users\User.virtualenvs\ssccms-fGQRLLK4\lib\site-packages\django\utils\module_loading.py”,第 24 行,在 import_string 中)来自 err
ImportError:模块“project.admin”未定义“NewAdminSite”属性/类
我的文件夹结构:
管理.py
项目
- 行政
- 设置
- 网址
- 应用
- 静止的
- 模板
- 迁移
工作目录
- sqlite
- 媒体
节点模块
语言环境
pipfile.lock
点文件
wsgi
希望这对于文件夹结构来说已经足够了,它是 django-shop cookiecutter 项目示例结构
编辑:
是的,这绝对是一个循环导入错误。我现在的解决方法是通过编写简单地使用给定的 admin.site:
admin.site.index_template = 'admin/newadminindextemplate.html'
有用!这实际上就是我想要的。但是文档说以下 https://docs.djangoproject.com/en/3.0/ref/contrib/admin/#root-and-login-templates
如果您希望更改索引、登录或注销模板,最好创建自己的 AdminSite 实例。
我试过了:
https://docs.djangoproject.com/en/3.0/ref/contrib/admin/#customizing-the-adminsite-class
而不是我粘贴在问题的第一个链接中的最重要的部分,但现在有
django.urls.exceptions.NoReverseMatch:找不到“cascade_texteditor_config”的反向。'cascade_texteditor_config' 不是有效的视图函数或模式名称。
现在我的新问题是:
是否有必要创建自己的索引模板实例?文档说没有解释,所以我以后可能会通过执行 admin.site.index_template 遇到任何问题?