如何解决Django ImportError:模块没有定义属性/类
我正在尝试添加自定义/覆盖的 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'
我没有任何其他应用程序,项目是我的根目录 ofc 我在 urls.py 中添加了 admin_site.urls 而不是 admin.site.urls,在 apps.py 中创建了一个自定义的 AdminConfig,并将新的 AdminConfig 添加到已安装的 Apps 而不是 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 中 ) 来自错误
ImportError:模块“project.admin”没有定义“NewAdminSite”属性/类
我的文件夹结构:
manage.py
项目
- 管理员
- 设置
- 网址
- 应用
- 静态
- 模板
- 迁移
工作目录
- sqlite
- 媒体
节点模块
语言环境
pipfile.lock
pip文件
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 可能会遇到什么问题吗?
解决方法
我刚刚遇到了类似的错误。这有点令人困惑,就我而言,这是由于循环导入。
就我而言,以下内容有所帮助:
- 将包含
NewAdminSite
类的文件顶部的导入转换为本地导入(在需要它们的函数内部 - 将
admin_site
变量的实例化移动到单独的文件中
这些问题实际上在您粘贴的代码中均不可见,但可能会让您知道要查找什么。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。