Django 400 Bad Request при запуске в production с gunicorn
Я получаю ошибку 400 на всех моих страницах, когда я перенес свое приложение django с одного хостинга на другой, хостинг, на который я переехал, это Scalingo.
Мой settings.py
файл:
DEBUG = os.getenv("DEBUG") == "True"
ALLOWED_HOSTS = [x.strip() for x in os.getenv("ALLOWED_HOSTS").split(",")]
Мои переменные окружения
ALLOWED_HOSTS="my-app.osc-fr.scalingo.fr,.localhost,127.0.0.1,[::1]"
DEBUG="False"
Я связался со службой поддержки, которая сообщила мне, что это должно быть проблема конфигурации моего приложения.
Все существующие ответы здесь, которые я нашел, советуют убедиться, что переменная ALLOWED_HOSTS корректна, и я уже проверил, что она включает необходимые адреса в соответствии с документацией django-специфической платформы хостинга.
В конце концов я отладил проблему, сделав print(ALLOWED_HOSTS)
в файле settings.py
и просмотрев журналы сборки.
Оказалось, что переменные окружения на этой платформе загружаются с включенными кавычками, в результате чего получается ['"my-app.osc-fr.scalingo.fr','.localhost','127.0.0.1','[::1]"']
.
Я отредактировал переменные среды, чтобы убрать кавычки, и все работает!
Не знаю, почему кавычки были приняты во внимание, учитывая, что я могу иметь их на других хостинг-платформах и локально, и они игнорируются. Если кто-нибудь знает, мне было бы интересно узнать!