ContentType 未声明显式 app_label

Posted

技术标签:

【中文标题】ContentType 未声明显式 app_label【英文标题】:ContentType doesn't declare an explicit app_label 【发布时间】:2017-08-06 06:24:26 【问题描述】:

我正在使用 Apache 和 mod_wsgi 将 Django 1.10 项目部署到 Ubuntu 服务器上。我收到以下我无法解决的 500 错误:

RuntimeError:模型类 django.contrib.contenttypes.models.ContentType 没有声明 显式 app_label 并且不在 INSTALLED_APPS 中的应用程序中。

settings.py 中的已安装应用程序:

INSTALLED_APPS = [
    'django.contrib.sites',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'dashboard',
]

wsgi.py:

sys.path.append('/home/x_dashboard/x_dashboard/')

activate_this = os.path.expanduser("/home/x_dashboard/.venv/bin/activate_this.py")
execfile(activate_this, dict(__file__=activate_this))

os.environ['PYTHON_EGG_CACHE'] = '/home/x_dashboard/x_dashboard/.python-egg'
os.environ['DJANGO_SETTINGS_MODULE'] = 'x_dashboard.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Apache 配置:

<VirtualHost *:80>
   #ServerName example.com
   #ServerAlias www.example.com
   #ServerAdmin username@example.com

   DocumentRoot /home/x_dashboard/x_dashboard/

   #ErrorLog /var/www/html/example.com/logs/error.log
   #CustomLog /var/www/html/example.com/logs/access.log combined

   WSGIScriptAlias / /home/x_dashboard/x_dashboard/x_dashboard/wsgi_local.py

   #Alias /robots.txt /var/www/html/example.com/public_html/robots.txt
   #Alias /favicon.ico /var/www/html/example.com/public_html/favicon.ico
   #Alias /images /var/www/html/example.com/public_html/images
   Alias /static /var/www/x_dashboard/static

   <Directory /home/x_dashboard/x_dashboard/x_dashboard/>
     <Files wsgi.py>
     Order deny,allow
     Allow from all
     Require all granted
     </Files>
   </Directory>
</VirtualHost>

Django documentation 表示不属于 installed_apps 中定义的应用程序的模型需要 app_label。但是,“django.contrib.contenttypes”在 installed_apps 中定义。

任何帮助表示赞赏。

【问题讨论】:

请显示完整的回溯 【参考方案1】:

尝试运行以下命令:

python manage.py makemigrations 
python manage.py migrate

这解决了我这边的问题。

【讨论】:

【参考方案2】:

对于其他在此错误中苦苦挣扎的人:我通过将“django.contrib.contenttypes”移动到 settings.py 中的 installed_apps 列表的顶部来解决它。

我也搬家了

import django
django.setup()

在安装应用程序之后。 This thread 很有帮助。

【讨论】:

在我的情况下,在虚拟环境中没有安装(pip install)在 INSTALLED_APPS 中列出的应用程序(django-rosetta)。 @eli import django django.setup() 是什么意思,你在哪里实现的。

以上是关于ContentType 未声明显式 app_label的主要内容,如果未能解决你的问题,请参考以下文章

RuntimeError:模型类 nose.util.C 未声明显式 app_label

RuntimeError:模型类 xxx 未声明显式 app_label 且不在 INSTALLED_APPS 中的应用程序中

shell 中的错误:未声明显式 app_label 且不在 INSTALLED_APPS 中的应用程序中

RuntimeError:模型类 xxx.xxx 未声明显式 app_label 且不在 INSTALLED_APPS 中的应用程序中

RuntimeError:模型类 myapp.models.class 未声明显式 app_label 并且不在 INSTALLED_APPS 中的应用程序中

RuntimeError:模型类 django.contrib.sites.models.Site 未声明显式 app_label 且不在 INSTALLED_APPS 中的应用程序中