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

标签 django heroku wsgi

我不明白为什么我在运行 Heroku run python manage.py runserver 时遇到错误

我尝试更改文件夹名称,并尝试在 MIDDLEWARE 中删除和添加 WhiteNoise

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

数据库设置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

django_heroku.settings(locals())

wsgi.py
import os

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

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ss.settings')

application = get_wsgi_application()
application = DjangoWhiteNoise(application)

至少服务器应该运行,这样我才能看到 Heroku 有什么问题。

最佳答案

根据 documentation ,中间件配置应该是这样的:

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

你也可以从 wsgi 文件中删除与 whitenoise 相关的行:

import os

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

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ss.settings')

application = get_wsgi_application()
#  application = DjangoWhiteNoise(application)

因为在 whitenoise >= 4.0 , 你不需要改变 wsgi 文件。

关于django.core.exceptions.ImproperlyConfigured : WSGI application '{project_name}.wsgi.application' could not be loaded; Error importing module,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56621436/

相关文章:

grails - Grails App无法部署到Heroku?

java - New Relic CPU 使用率 Heroku 应用程序

python - 我应该如何在 python 中执行 RedisDict?

django - Django在 View 中使用进程还是线程来处理用户请求?

Django 没有显示更新的 css 文件

mysql - Django游标查询获取总时间

python - 如何将环境变量传递给 uwsgi?

django - 如何为邮政地址建模

ruby-on-rails-3 - git push heroku 失败,因为试图安装开发 gems。 BUNDLE_WITHOUT 命令不起作用

python - Gunicorn 不会启动 Flask 应用程序,因为 "Application object must be callable"