2014-06-05 20 views
10

Tôi đang cố gắng làm theo lời khuyên của cuốn sách "Hai muỗng của Django" và mặc dù nó là một cuốn sách thực sự tốt, tôi nghĩ rằng phần này không rõ ràng. Vì vậy, tôi chia tập tin cài đặt của tôi và tạo ra một thư mục như thế này:Django. Sử dụng nhiều tập tin cài đặt với Heroku

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

hầu hết các thiết lập được trong file base.py

trong local.py Tôi có điều này:

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

trong production.py tôi có điều này:

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

Khi tôi chạy cục bộ:

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

mọi thứ hoạt động tốt.

Nhưng khi tôi đẩy thay đổi Heroku, tôi nhận được các bản ghi:

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

Vì vậy, tôi đoán Heroku là không tìm thấy file thiết lập của tôi, tôi không biết làm thế nào để sửa lỗi này (nó có thể là rất đơn giản).

Hai muỗng của Django là loại mỉa mai ở đây, nó viết "Nền tảng như dịch vụ - Xem phần 25,2" và sau đó trong phần đó nó chỉ viết "đọc vBulletin Tài liệu":/

+0

Điều này có giải quyết được không: http://stackoverflow.com/questions/22674128/cant-get-django-postgres-app-settings-working-on-heroku?rq=1 –

Trả lời

3

Sau khi bạn đã đăng nhập vào Heroku với Heroku đăng nhập bạn có thể kiểm tra configs của bạn bằng cách chạy: heroku config nếu bạn không nhìn thấy một SECRET_KEYDJANGO_SETTINGS_MODULE bạn có thể đặt nó bằng cách chạy:

heroku config: set SECRET_KEY='secret_key_goes_here' 

heroku config: set DJANGO_SETTINGS_MODULE=mysite.settings.production 

cuối cùng chắc chắn rằng bạn có cú pháp sau bên trong của sản xuất tập tin thiết lập của bạn:

SECRET_KEY = os.environ['SECRET_KEY'] 

Các intstructions trên dành cho các cấu trúc dự án sau -myproject -app1 -app2 -mysite -settings init py base.py dev.py production.py -manage.py Pipfile Procfile yêu cầu.txt

+0

đừng quên xóa không gian sau khi cấu hình: – shox

8

Bạn có thể sử dụng biến môi trường DJANGO_SETTINGS_MODULE để xác định một mô-đun thiết lập mặc định:

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

Trên máy tính Linux địa phương:

export DJANGO_SETTINGS_MODULE=settings.local 

On Heroku:

heroku config:set DJANGO_SETTINGS_MODULE=settings.production 
+1

Xin chào Soytoise. Tôi đã làm điều đó và tôi cũng bao gồm 'os.environ.setdefault ('DJANGO_SETTINGS_MODULE', 'appname.settings.production')' trong tệp wsgi như tôi đã hiểu từ tài liệu bạn đã đăng. Nhưng tôi nhận được lỗi * ImportError: Không thể nhập cài đặt 'settings.production' (Có phải trên sys.path? Có lỗi nhập trong tệp cài đặt không?): Không có mô-đun có tên settings.production *:/ – alejoss

+2

@alejoss try 'export DJANGO_SETTINGS_MODULE = project.settings.local' trong đó' project' là tên của dự án của bạn. – Kar

Các vấn đề liên quan