ContentType 未声明显式 app_label

eli*_*eli 8 apache django mod-wsgi

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

运行时错误:模型类 django.contrib.contenttypes.models.ContentType 未声明显式 app_label 并且不在 INSTALLED_APPS 中的应用程序中。

settings.py 中的 installed_apps:

INSTALLED_APPS = [
    'django.contrib.sites',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'dashboard',
]
Run Code Online (Sandbox Code Playgroud)

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()
Run Code Online (Sandbox Code Playgroud)

阿帕奇配置:

<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>
Run Code Online (Sandbox Code Playgroud)

Django文档说,一个app_label需要不属于在INSTALLED_APPS中定义的应用程序模型。但是,'django.contrib.contenttypes'在 installed_apps 中定义的。

任何帮助表示赞赏。

小智 5

尝试运行以下命令:

python manage.py makemigrations 
python manage.py migrate
Run Code Online (Sandbox Code Playgroud)

这解决了我这边的问题。


eli*_*eli 3

对于其他与此错误作斗争的人:我通过将“django.contrib.contenttypes”移动到 settings.py 中已安装应用程序列表的顶部来解决它。

我也搬家了

import django
django.setup()
Run Code Online (Sandbox Code Playgroud)

到installed_apps之后。该线程很有帮助。

  • 就我而言,这是 INSTALLED_APPS 中列出的应用程序 (django-rosetta) 未在虚拟环境中安装 (pip install)。 (2认同)