【问题标题】:Django Error: 'myproject.wsgi.application' could not be loadedDjango 错误:无法加载“myproject.wsgi.application”
【发布时间】:2018-05-17 08:55:13
【问题描述】:

我目前正在尝试测试我的 Django 应用程序,该应用程序最终将部署到 Heroku。在本地测试时,我遇到了错误:

django.core.exceptions.ImproperlyConfigured: WSGI application 
'foodForThought.wsgi.application' could not be loaded; Error importing module.

我的wgsi.py文件配置为:

import os
import signal
import sys
import traceback
import time

from django.core.wsgi import get_wsgi_application
from whitenoise.django import DjangoWhiteNoise

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "foodForThought.settings")

application = get_wsgi_application()
application = DjangoWhiteNoise(application)

而我的settings.py文件配置为:

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

...

# Application definition

INSTALLED_APPS = [
    'recipe.apps.RecipeConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'foodForThought'
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'foodForThought.urls'

...

WSGI_APPLICATION = 'foodForThought.wsgi.application'

...

我目前正在使用 Django 1.11.7 并在 venv 中进行测试。是什么导致这个问题发生?

【问题讨论】:

  • foodForThought中是否有wsgi.py文件?
  • 是的,wgsi.py 文件在 foodForThought 中。我将使用我的文件目录更新问题的内容。
  • 您是否真的告诉 mod_wsgi 您的项目代码在哪里可以找到它?显示你的 mod_wsgi 配置。

标签: python django heroku wsgi django-wsgi


【解决方案1】:

这对我有用,我知道我迟到了 11 个月,但我希望它适用于任何面临这个问题的人。 根据 Whitenoise 的更新日志here。上面写着:

Django 的 WSGI 集成选项(涉及编辑 wsgi.py)已被删除。相反,您应该将 WhiteNoise 添加到 settings.py 中的中间件列表中,并从 wsgi.py 中删除对 WhiteNoise 的任何引用。有关更多详细信息,请参阅文档。

我照他们说的做了,我从我的wsgi.py 文件中删除了所有与 Whitenoise 相关的行,并在我的settings.py 文件中更改了MIDDLEWARE 中的这两行:

'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',

而且,这实际上对我有用。希望对你们有用!

【讨论】:

  • 如果MIDDLEWAREsettings.py文件中有'whitenoise.middleware.WhiteNoiseMiddleware',安装Whitenoise(pip install whitenoise)
【解决方案2】:

我遇到了同样的问题,并且是由一个相关问题引起的,当移动到另一台服务器时,尚未安装 WhiteNoise...

【讨论】:

    猜你喜欢
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    相关资源
    最近更新 更多