Изменение файла settings.py для Heroku

We use cookies. Read the Privacy and Cookie Policy

Затем в конец файла settings.py необходимо добавить раздел для определения настроек, предназначенных конкретно для среды Heroku:

settings.py

...

# Настройки для django-bootstrap3

BOOTSTRAP3 = {

'include_jquery': True,

}

# Настройки Heroku

(1) if os.getcwd() == '/app':

(2) . .import dj_database_url

. .DATABASES = {

. . . .'default': dj_database_url.config(default='postgres://localhost')

. .}

. .

. .# Поддержка заголовка 'X-Forwarded-Proto' для request.is_secure().

(3) . .SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

. .

. .# Разрешены все заголовки хостов.

(4) . .ALLOWED_HOSTS = ['*']

. .# Конфигурация статических ресурсов

(5) . .BASE_DIR = os.path.dirname(os.path.abspath(__file__))

. .STATIC_ROOT = 'staticfiles'

. .STATICFILES_DIRS = (

. . . .os.path.join(BASE_DIR, 'static'),

. .)

В точке (1) используется функция getcwd(), которая возвращает текущий рабочий каталог, из которого был запущен файл. В схеме развертывания Heroku таким каталогом всегда является /app. При локальном развертывании каталог обычно совпадает с именем папки проекта (learning_log в нашем случае). Проверка if гарантирует, что настройки в этом блоке будут применяться только при развертывании проекта в Heroku. Такая структура позволяет создать один файл настроек, который подойдет как для локальной среды разработки, так и для развертывания на сервере.

В точке (2) импортируется модуль dj_database_url, упрощающий настройку базы данных в Heroku. Heroku использует PostgreSQL (или Postgres) — более мощную базу данных, чем SQLite; эти параметры настраивают проект для работы с Postgres в среде Heroku. Остальные настройки обеспечивают поддержку запросов HTTPS (3), правильный доступ к проекту с URL Heroku (4) и правильное размещение статических файлов на Heroku (5).