Django错误:配置不当:WSGI应用程序

7 投票
2 回答
19872 浏览
提问于 2025-04-17 15:26

我的应用程序昨晚还好好的,不知道今早怎么就不行了。我记得我只做了一件事,就是创建了一个叫 django 的应用来存储我的模型、测试和视图。

现在我在用 Heroku Postgres 应用在 OS X 上运行 django 时遇到了这个错误,并且使用了 dj_database 作为中间件:

  File "/Users/{ME}/Projects/{PROJECT}/{PROJECT}/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 58, in get_internal_wsgi_application
    "could not import module '%s': %s" % (app_path, module_name, e)) django.core.exceptions.ImproperlyConfigured: WSGI application
'{PROJECT}.wsgi.application' could not be loaded; could not import module
'{PROJECT}.wsgi': No module named core.wsgi

这是我 wsgi.py 文件中相关的部分:

"""
WSGI config for {PROJECT} project.

This module contains the WSGI application used by Django's development
server and any production WSGI deployments. It should expose a
module-level variable named ``application``. Django's ``runserver``
and ``runfcgi`` commands discover this application via the
``WSGI_APPLICATION`` setting.

Usually you will have the standard Django WSGI application here, but
it also might make sense to replace the whole Django WSGI application
with a custom one that later delegates to the Django one. For example,
you could introduce WSGI middleware here, or combine a Django
application with an application of another framework.

"""
import os

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

# This application object is used by any WSGI server configured to use this
# file. This includes Django's development server, if the WSGI_APPLICATION
# setting points here.
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

# Apply WSGI middleware here.
# from helloworld.wsgi import HelloWorldApplication
# application = HelloWorldApplication(application)

这是我觉得相关的 settings.py 文件中的部分:

WSGI_APPLICATION = '{PROJECT}.wsgi.application'

# ...

import dj_database_url
DATABASES['default'] = dj_database_url.config(default='sqlite://db/sqlite3.db')

2 个回答

0

来自Django的文档

你需要避免用内置的Python或Django组件来命名你的项目。特别是,像django(这会和Django本身冲突)或test(这会和Python的一个内置包冲突)这样的名字是要避免的。

7

创建一个叫做 django 的应用意味着,任何写成 from django import X 的代码都会去找你自己做的这个应用,而不是去找 django 这个框架。

在这种情况下,软件试图导入 django.core.wsgi,但它现在在你的应用代码里找这个文件,而这个文件根本不存在,所以就出现了错误:No module named core.wsgi


给你的应用换个名字。

你需要重命名包含你应用的文件夹,以及在 settings.py 文件中的 INSTALLED_APPS 这一项。

撰写回答