В 4 августа 2020 года Django выпустил свою версию 3.1. Однако, как новичок Django Developer, я столкнулся с некоторыми проблемами, развернувшими его Heroku.
В этом посте я буду писать, как развернуть его без особых хлопот, которые я столкнулся.
Давайте начнем
wsgi.py
Перейдите в файл Django Project’s WSGI.PY.
Добавьте это Os.environ ["django_settings_module"]
вместо Os.environ.SetDefault ('django_settings_module', '
Procfile (как обычно)
Добавьте дополнительные атрибуты (–log-файл -) для генерации журналов Веб: Gunicorn < Proj_name> .wsgi --log-файл -
Каждый раз, когда вы используете Gunicorn, чтобы развернуть Django, вы обязательно сталкиваетесь с проблемами. И использование этого синтаксиса помогает отладить его.
Собирать статическое (если я отключить?)
Неа.
Не делайте, я повторяю не отключающую статический метод, установив вариабельную среду Disable_collectstatic
до 1
Ваши собственные статические файлы будут загружены без проблем, но пакеты Django и модулями, которые имеют свои собственные статические файлы, не смогут загружать правильно.
Время выполнения
Обязательно добавить Runtime.txt Файл, чтобы Heroku Dyno знает, какую версию Python использовать. С новым Python 3.8, теперь даже важнее, как Heroku Free Dynos обычно используют более старые версии Python.
Settings.py
Самая важная часть
В новейшей версии Django (3.1) файл settings.py настраивает База данных
Словарь Имя
следующим образом:
‘НАЗВАНИЕ’: Base_dir/’db.sqlite3′
Как я уже сказал, Heroku Dynos не сможет идентифицировать это как Строка И сборка не удастся. Таким образом, мы будем использовать его старый и лучший способ, с .присоединиться ()
Метод:
«Имя»: OS.Path.join (base_dir, ‘db isqlite3’)
Settings.py (постоянные переменные)
Обязательно заявляйте Media_url , Media_root , Static_url С Static_root. , StaticFile_dirs Константы следующим образом:
STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'static') STATICFILE_DIRS = [ "static/images", "static/css", "staticfiles",] MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
Конфигурация производства
Добавьте настройку производства в настройках.
if os.getcwd() == '/app': import dj_database_url db_from_env = dj_database_url.config(conn_max_age=500) DATABASES['default'].update(db_from_env) SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') ALLOWED_HOSTS = ['APP_NAME.herokuapp.com'] DEBUG = True BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
Это все, что я думал об умении с тобой. Пожалуйста, дайте мне знать, если есть что-то не так. Я буду рад учиться.
Оригинал: “https://dev.to/fazledyn/deploying-django-3-1-on-heroku-417”