Изменение файла settings.py для Heroku
Затем в конец файла 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).