【问题标题】:setting up Django app to work on google app engine GAE (app.yaml & main.py)设置 Django 应用程序以在谷歌应用程序引擎 GAE(app.yaml 和 main.py)上工作
【发布时间】:2018-02-05 20:12:29
【问题描述】:

我有一个可以在 Heroku 上运行的 Django 应用程序。该结构是名为“untitled”的项目和一个名为“web”的应用程序,因此结构是:


project_root
静态
模板
无标题
--->初始化.py
--->settings.py
--->urls.py
--->wsgi.py

网络
--->初始化.py
--->admin.py
--->apps.py
--->models.py
--->tests.py
--->urls.py
--->views.py

这是一个相当基本的应用程序,我可以在 GAE 之外(本地和 Heroku)工作,但是,我遇到了 GAE 的 app.yaml 和 main.py 要求。

我的 app.yaml 是:

application: seismic-interpretation-institute-py27
version: 1
runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /.*
  script: main.app

libraries:
- name: django
  version: "latest"

我的 main.py(从 PyCharm 生成)是

import os,sys

import django.core.handlers.wsgi
import django.core.signals
import django.db
import django.dispatch.dispatcher

# Google App Engine imports.
from google.appengine.ext.webapp import util

# Force Django to reload its settings.
from django.conf import settings
settings._target = None

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

# Unregister the rollback event handler.
django.dispatch.dispatcher.disconnect(
  django.db._rollback_on_exception,
  django.core.signals.got_request_exception)


def main():
    # Create a Django application for WSGI.
    application = django.core.handlers.wsgi.WSGIHandler()

    # Run the WSGI CGI handler with that application.
    util.run_wsgi_app(application)

if __name__ == '__main__':
    main()

最后在本地运行时报出的输出是

似乎是错误,

ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.

导致我的问题。我不确定如何解决它。

【问题讨论】:

  • 对于任何感兴趣的人,我使用 Bear Brown 的评论来意识到我编辑了默认的 PyCharm main.py 文件。我似乎已将import os,sysos.environ['DJANGO_SETTINGS_MODULE'] = 'untitled.settings 移动到上面列出的main.py 文件的前两行。这清除了错误。

标签: django google-app-engine pycharm


【解决方案1】:

尝试替换

from django.conf import settings
settings._target = None

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

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "untitled.settings")
from django.conf import settings
settings._target = None

【讨论】:

  • 感谢您的快速回复!这解决了它。
猜你喜欢
  • 1970-01-01
  • 2020-11-21
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-15
  • 2013-05-18
  • 1970-01-01
相关资源
最近更新 更多