2017-08-28 64 views
0

我有一個工作的Django應用程序,我能在Heroku上運行。結構是項目命名爲 '無',並命名爲 '網絡' 的應用使得該結構是:設置Django應用程序工作谷歌應用程序引擎GAE(app.yaml&main.py)


project_root
靜態
模板

--->初始化的.py
- - > settings.py
---> urls.py
---> wsgi.py

網絡
--->初始化的.py
---> admin.py
---> apps.py
---> models.py
---> tests.py
---> urls.py
---> views.py

這是一個相當基本的應用程序,我可以在GAE(本地和Heroku)之外工作,但是,我被困在app.yaml和main.py對GAE的要求。

我的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() 

最後,在本地運行時所報告的輸出是

enter image description here

看來,錯誤,

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

正在導致我的問題。我不完全確定如何解決它。

+0

任何有興趣,我用熊布朗的評論意識到我編輯的默認PyCharm main.py文件。我似乎已經將'import os,sys'和'os.environ ['DJANGO_SETTINGS_MODULE'] ='untitled.settings'移動到上面列出的main.py文件的前兩行。這清除了錯誤。 – Dustin

回答

0

嘗試更換

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 
+0

感謝您的快速回復!這解決了它。 – Dustin