Django ImportError:模块未定义属性/类

2024-10-01 22:36:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试添加自定义/重写的管理员站点,因为我需要一个不同的管理员模板。我按照医生说的做了一切: https://docs.djangoproject.com/en/3.0/ref/contrib/admin/#overriding-the-default-admin-site

project/admin.py

from django.contrib.admin import AdminSite 

class NewAdminSite(AdminSite):
    index_template = 'admin/index.html'
    site_header = 'Administration'

admin_site = NewAdminSite(name='newadmin')

project/apps.py

class NewAdminConfig(AdminConfig):
    default_site = 'project.admin.NewAdminSite'

我没有任何其他应用程序,project是我的根目录 ofc I在URL.py中添加了admin_site.url而不是admin.site.url,在apps.py中创建了自定义AdminConfig,并将新的AdminConfig添加到已安装的应用中而不是django.contrib.admin

问题是,我现在收到了:

AdminSiteClass=导入\u字符串(apps.get\u app\u config('admin')。默认\u站点)

文件“C:\Users\User.virtualenvs\ssccms-fGQRLLK4\lib\site packages\django\utils\module\u loading.py”,第24行,导入字符串 )犯错误

ImportError:模块“project.admin”未定义“NewAdminSite”属性/类

我的文件夹结构:

manage.py

计划

  • 管理员
  • 背景
  • 网址
  • 应用程序
  • 静止的
  • 模板
  • 迁移

workdir

  • 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

If you wish to change the index, login or logout templates, you are better off creating your own AdminSite instance.

我试过:

https://docs.djangoproject.com/en/3.0/ref/contrib/admin/#customizing-the-adminsite-class

我在问题的第一个链接中粘贴了替代部分,但现在有了

django.urls.exceptions.NoReverseMatch: Reverse for 'cascade_texteditor_config' not found. 'cascade_texteditor_config' is not a valid view function or pattern name.

现在我的新问题是:

是否需要创建自己的索引模板实例?文档中没有解释,所以我以后在使用admin.site.index_模板时是否会遇到任何问题


Tags: djangopyhttpsprojectcom模板docsindex
1条回答
网友
1楼 · 发布于 2024-10-01 22:36:30

我刚刚犯了一个类似的错误。这有点令人困惑,在我的例子中,这是由于循环导入

在我的情况下,以下几点有帮助:

  • 将从包含NewAdminSite类的文件顶部导入的内容转换为本地导入(在需要它们的函数内部)
  • admin_site变量的实例化移动到单独的文件中

这两个问题在粘贴的代码中实际上都不可见,但可能会让您知道要查找什么

相关问题 更多 >

    热门问题