簡體   English   中英

Django的。 使用Heroku的多個設置文件

[英]Django. Using multiple settings files with Heroku

我試圖遵循“Django的兩個勺子”一書的建議,雖然這是一本非常好的書,但我認為這一部分還不清楚。 所以,我拆分我的設置文件並創建了一個這樣的文件夾:

settings/
 __init__.py
 base.py (allmost everything there)
 local.py (dev. specific settings)
 production.py (settings for Heroku)

大多數設置都在base.py文件中

在local.py我有這個:

# settings/local.py
from .base import *
DEBUG = True
TEMPLATE_DEBUG = DEBUG
INSTALLED_APPS += ("debug_toolbar", "django_extensions", "south",)

在production.py我有這個:

from .base import *
INSTALLED_APPS += ("gunicorn",)

當我在本地運行時:

python manage.py runserver 7000 --settings=appname.settings.local
python manage.py runserver 7000 --settings=appname.settings.production

一切正常。

但是當我將更改推送到Heroku時,我得到了日志:

  File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/util.py", line 354, in import_app

 raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")

所以,我猜Heroku沒有找到我的設置文件,我不知道如何解決這個問題(可能很簡單)。

Django的兩個獨家新聞在這里具有諷刺意味,它寫道“平台即服務 - 參見第25.2節”,然后在該部分中它只寫“讀取平台文檔” :/

使用heroku登錄登錄heroku后,您可以通過運行: heroku config來檢查您的heroku config 如果您沒有看到SECRET_KEYDJANGO_SETTINGS_MODULE ,可以通過運行來設置它們:

heroku config:set SECRET_KEY='secret_key_goes_here'

heroku config:set DJANGO_SETTINGS_MODULE=mysite.settings.production

最后,確保在生產設置文件中包含以下語法:

SECRET_KEY = os.environ['SECRET_KEY']

以上說明適用於以下項目結構

-myproject
  -app1
  -app2
  -mysite
    -settings
      __init__.py
      base.py
      dev.py
      production.py
-manage.py
-Pipfile
-Procfile
-requirements.txt

您可以使用環境變量DJANGO_SETTINGS_MODULE指定默認設置模塊:

https://docs.djangoproject.com/en/dev/topics/settings/#envvar-DJANGO_SETTINGS_MODULE

在本地Linux機器上:

export DJANGO_SETTINGS_MODULE=settings.local

在Heroku上:

heroku config:set DJANGO_SETTINGS_MODULE=settings.production

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM