【问题标题】:django error: ImproperlyConfigured: WSGI applicationdjango 错误:配置不当:WSGI 应用程序
【发布时间】:2013-02-10 19:37:58
【问题描述】:

我的应用程序昨晚还在工作,不知道为什么今天早上不能工作。我认为我所做的只是创建了一个名为 django 的应用程序来存储我的模型、测试和视图。

遇到此错误,在 OS X 上使用 Heroku Postgres 应用程序运行 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')

【问题讨论】:

    标签: python django wsgi django-middleware


    【解决方案1】:

    创建一个名为django 的应用程序意味着任何from django import X 都将查看您的应用程序,而不是django 框架。

    在这种情况下,该软件正在尝试导入django.core.wsgi,但它现在正在您的应用代码中查找此文件,但找不到该文件;因此错误:No module named core.wsgi


    为您的应用命名。

    您必须重命名包含您的应用的文件夹,以及 settings.py 中的 INSTALLED_APPS 条目。

    【讨论】:

    • @fox 乐于助人!请记住确保永远不要用您的模块覆盖另一个 Python 模块:)
    • 是的,有道理。还有一个问题——该应用程序从未在INSTALLED_APPS 下列出。我忘记了,如果应用程序的目录在我当前的项目目录中(即project\app),我是否必须在此处列出它以便 django 提取它?
    • @fox 是,或者django 不会注册应用程序,除其他外,不会创建所需的数据库表。
    • 好的,最后一个问题:如何在INSTALLED_APPS 部分设置相对路径?
    【解决方案2】:

    来自 Django documentation:

    您需要避免使用内置 Python 或 Django 组件来命名项目。特别是,这意味着您应该避免使用像 django(这将与 Django 本身冲突)或 test(与内置 Python 包冲突)这样的名称。

    【讨论】:

      猜你喜欢
      • 2020-05-31
      • 1970-01-01
      • 2012-06-20
      • 2023-03-06
      • 1970-01-01
      • 2016-07-07
      • 1970-01-01
      • 2018-12-21
      • 2020-04-08
      相关资源
      最近更新 更多