更改设置文件夹后发出加载admin.site.urls的问题

时间:2018-01-06 15:48:34

标签: django django-urls django-settings

我按照以下方式重新组织了Django:

config
 - settings
     - base.py
     - local.py
 urls.py
 wsgi.py   

base.py/local.py

ROOT_URLCONF = 'config.urls'
WSGI_APPLICATION = 'config.wsgi.application'

manage.py我改变了:

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.local")

wsgi.py我改变了:

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.local")

我在runserver上有以下错误:

\django\contrib\admin\sites.py", line 269, in get_urls
    path('%s/%s/' % (model._meta.app_label, model._meta.model_name), include(model_admin.urls)),
AttributeError: 'AccountAdmin' object has no attribute 'urls'

这与这一行有关:

 path('admin/', admin.site.urls), # Django 2.0 syntax

如果我评论该行,我会收到以下错误:

django\contrib\admin\sites.py", line 79, in check
    if modeladmin.model._meta.app_config in app_configs:
AttributeError: 'AccountAdmin' object has no attribute 'model

应用管理员已安装应用,我不知道是什么造成了这个问题。

1 个答案:

答案 0 :(得分:1)

嗯......这里发生了几件事。一次一件事:

settings目录下放置一个__init__.py文件,其中包含以下内容:

from .base import *

try:
    from .local import *
    LIVE = False
except ImportError:
    LIVE = True

if LIVE:
    try:
        from .production import *
    except ImportError:
        pass

将此内容放在__init__.py文件中,您可以只使用settings引用'config.settings'文件,localproduction未引用({ {1}}会处理它们。)

现在这已经过时了,将 __init__.pyuwsgi.py更改为:

manage.py

假设你已经完成了所有这些,它应该可以工作(这就是我多年来构建我的项目并且从来没有任何问题)。否则,请使用项目结构以及os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings') base.py内容更新您的问题,以便进行解决。