django_settings_module在GAE服务器上未定义



所以,我知道你们已经被问了一百万次这个问题,相信我,我想我都读过了。当我试图使用谷歌云SQL将DJANGO polls应用程序(DJANGO教程中制作的应用程序)转换为在谷歌应用程序引擎上运行时,我得到了DJANGO_SETTINGS_MODULE is undefined错误。

以下是谷歌应用程序引擎日志给我的实际堆栈跟踪:

Traceback (most recent call last):
File "/base/python27_runtime/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 223, in Handle 
result = handler(dict(self._environ), self._StartResponse)
File "/base/python27_runtime/python27_lib/versions/third_party/django-1.4/django/core/handlers/wsgi.py", line 219, in __call__
self.load_middleware()
File "/base/python27_runtime/python27_lib/versions/third_party/django-1.4/django/core/handlers/base.py", line 39, in load_middleware
for middleware_path in settings.MIDDLEWARE_CLASSES:
File "/base/python27_runtime/python27_lib/versions/third_party/django-1.4/django/utils/functional.py", line 184, in inner
self._setup()
File "/base/python27_runtime/python27_lib/versions/third_party/django-1.4/django/conf/__init__.py", line 40, in _setup
raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE)
ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.

当我试图在谷歌应用程序引擎提供的dev_appserver.py上运行它时,也遇到了同样的错误,但通过添加成功地纠正了这个错误

env_variables:
DJANGO_SETTINGS_MODULE: 'DjangoTut.settings'

到app.yaml文件。

我的项目目录如下:

DjangTutDjangTut
  • init.py
  • 设置.py
  • urls.py
  • wsgi.py
  • 民意测验
    • init.py
    • admin.py
    • 型号.py
    • 测试.py
    • urls.py
    • 视图.py
  • app.yaml
  • 经理.py
  • 和我的app.yaml文件看起来像这个

    application: hochotime
    version: 10
    runtime: python27
    api_version: 1
    threadsafe: true
    
    libraries:
    - name: django
    version: "1.4"
    builtins:
    - django_wsgi: on
    env_variables:
    DJANGO_SETTINGS_MODULE: 'settings'
    

    其他所有文件都与此处建议的文件相同https://docs.djangoproject.com/en/1.4/intro/tutorial01/

    我已经尝试添加

    import os
    os.environ['DJANGO_SETTINGS_MODULE'] = 'DjangoTut.settings'
    

    到几乎每一个python文件的开始,但都无济于事。我尝试将设置文件移到项目目录而不是应用程序目录中,并将所有os.environ['DJANGO_SETTINGS_MODULE']更改为仅指向"设置"。我也尝试过直接配置设置,如下所示https://docs.djangoproject.com/en/dev/topics/settings/#using-设置没有设置django设置模块,但仍然,每当我试图在谷歌服务器上运行它时,我都会收到同样的错误。

    如有任何帮助,我们将不胜感激。

    你在用Django nonrl吗?如果没有,请看一下这篇文章。

    我会尝试将settings.py移到与app.yaml相同的目录中。从app.yaml中删除env_variables,就不需要它们了。但是,如果您还没有定义处理程序(不确定是否列出了整个app.yaml),则需要定义处理程序:

    handlers:
    - url: /static
    static_dir: static
    - url: /.*
    script: main.py
    

    环境设置应该在您设置的wsgi处理程序中(本例中为main.py),如上面的谷歌文章所示

    os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
    

    希望这能让你走上正确的道路。

    相关内容

    • 没有找到相关文章

    最新更新