2014-06-05 20 views
10

Staram się postępować zgodnie z poradą z książki "Dwa szufelki Django" i chociaż jest to naprawdę dobra książka, myślę, że ta sekcja jest niejasna. Więc podzielić mój plik ustawień i utworzeniu folderu takiego:Django. Używanie wielu plików ustawień z Heroku

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

większość ustawień znajdują się w pliku base.py

w local.py mam to:

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

w production.py mam to:

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

Kiedy uruchomić lokalnie:

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

wszystko działa poprawnie.

Ale kiedy wciskam zmiany Heroku, dostaję dziennik:

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.") 

Więc chyba Heroku nie jest znalezienie moje pliki ustawień, nie wiem jak to naprawić (to może być bardzo prosty).

dwie miarki Django jest trochę ironiczne tutaj, to pisze „Platform as a Service - patrz rozdział 25.2”, a następnie w tej sekcji to po prostu pisze „czytać dokumentację Platform”:/

+0

Czy to rozwiązuje: http://stackoverflow.com/questions/22674128/cant-get-django-postgres-app-settings-working-onoczy?rq=1 –

Odpowiedz

3

Po zalogowaniu się Heroku z Heroku zalogować można sprawdzić configs uruchamiając: heroku config jeśli nie widać SECRET_KEY i DJANGO_SETTINGS_MODULE można ustawić go uruchamiając:

heroku config: set SECRET_KEY='secret_key_goes_here' 

i

heroku config: set DJANGO_SETTINGS_MODULE=mysite.settings.production 

ostatecznie upewnić, że masz następującą składnię wewnątrz pliku konfiguracji produkcji:

SECRET_KEY = os.environ['SECRET_KEY'] 

Powyższe intstructions są na następującej strukturze projektu -myproject -app1 -app2 -mysite -Settings init, .py base.py dev.py production.py -manage.py Pipfile Procfile wymagania.txt

+0

Nie zapomnij usunąć spacji po konfiguracji: – shox

8

można użyć zmienna środowiskowa DJANGO_SETTINGS_MODULE określić moduł ustawienia domyślne:

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

na lokalnym komputerze z systemem Linux:

export DJANGO_SETTINGS_MODULE=settings.local 

Na Heroku:

heroku config:set DJANGO_SETTINGS_MODULE=settings.production 
+1

Witaj Soytoise. Zrobiłem to i dodałem również "os.environ.setdefault (" DJANGO_SETTINGS_MODULE "," appname.settings.production ") w pliku wsgi, co zrozumiałem z opublikowanej dokumentacji. Ale pojawia się błąd * ImportError: Nie można zaimportować ustawień settings.production "(Czy jest na sys.path? Czy w pliku ustawień występuje błąd importu?): Brak modułu o nazwie settings.production *:/ – alejoss

+2

@alejoss try 'export DJANGO_SETTINGS_MODULE = project.settings.local' gdzie' projekt' to nazwa twojego projektu. – Kar

Powiązane problemy