在升级到Django 1.7时,我收到来自./manage.py的以下错误消息

$ ./manage.py 
Traceback (most recent call last):
  File "./manage.py", line 16, in <module>
    execute_from_command_line(sys.argv)
  File "/home/johnc/.virtualenvs/myproj-django1.7/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 427, in execute_from_command_line
    utility.execute()
  File "/home/johnc/.virtualenvs/myproj-django1.7/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 391, in execute
    django.setup()
  File "/home/johnc/.virtualenvs/myproj-django1.7/local/lib/python2.7/site-packages/django/__init__.py", line 21, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/home/johnc/.virtualenvs/myproj-django1.7/local/lib/python2.7/site-packages/django/apps/registry.py", line 89, in populate
    "duplicates: %s" % app_config.label)
django.core.exceptions.ImproperlyConfigured: Application labels aren't unique, duplicates: foo

问题是什么?我如何解决它?

推荐答案

问题是,随着Django 1.7中应用程序的更改,应用程序需要有一个唯一的标签.

默认情况下,应用程序标签是包名,所以如果您有一个与某个应用程序模块同名的包(在本例中为foo),您将遇到此错误.

解决方案是覆盖应用程序的默认标签,并通过将其添加到__init__.py来强制加载此配置.

# foo/apps.py

from django.apps import AppConfig

class FooConfig(AppConfig):
    name = 'full.python.path.to.your.app.foo'
    label = 'my.foo'  # <-- this is the important line - change it to anything other than the default, which is the module name ('foo' in this case)

# foo/__init__.py

default_app_config = 'full.python.path.to.your.app.foo.apps.FooConfig'

https://docs.djangoproject.com/en/1.7/ref/applications/#for-application-authors

Django相关问答推荐

Django 中模型将数据存储在哪里?

AttributeError:模块rest_framework.serializers在 Swagger 中的 Django 中没有属性NullBooleanField

如何使用 jQuery 建立 Django 网站

在 Django 的 TextField 中禁用 HTML 转义

在 PyCharm 中运行 Django 测试

直接在模型类上使用 Django 管理器与静态方法

JSP模板继承

Django 视图 - 首先从调用应用程序的目录加载模板

如何访问 Django Rest Framework 上的自定义 HTTP 请求标头?

在基于类的通用视图 CreateView 中访问 request.user 以便在 Django 中设置 FK 字段

是否可以将 FastAPI 与 Django 一起使用?

ImportError:升级到 Django 4.0 后无法从 'django.conf.urls' 导入名称 'url'

如何创建一个在复选框右侧显示复选框标签的 Django 表单?

has_object_permission 和 has_permission 有什么区别?

清理提交的表单数据中的 HTML

使用直通模型了解 Django 中的多对多字段

如何在字段集中显示 Django 管理内联模型?

显式 cursor.close() 的必要性

只使用 Django 的某些部分?

Django REST 框架中的每个字段权限