Флаг отладки Heroku не останавливает отладку django - PullRequest
1 голос
/ 05 мая 2020

Сейчас у меня есть проект Django в heroku, но я пытался остановить режим отладки, но, к сожалению, он не работает.

Сначала я попытался остановить его с settings.py:

DEBUG=False

DEBUG = os.environ.get('DEBUG', False)

Оба не работают.

Я также пытался установить env переменную:

heroku config:set DEBUG=False

heroku config:unset DEBUG

И то, и другое тоже не помогает.

Я попытался присвоить неверное значение отладке в settings.py для тестирования, что вызвало ошибку sh развертывание.

Надеюсь, кто-нибудь сможет с этим помочь.

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Наконец проблема решена, на самом деле было две проблемы:

- Первая: Я использовал

из django .contrib.staticfiles.storage import staticfiles_storage

в моем файле моделей, чтобы получить stati c url файла

staticfiles_storage.url ('img / default.jpg')

Что вызывает проблемы во время collectstati c в heroku, каким-то образом djano go не знал, где найти файл манифеста для него, поэтому я удалил его и обработал его в шаблоне html.

- Вторая проблема: Я отключаю collectstati c в соответствии с советом от heroku- django -assets , но это создало большой беспорядок, позже я понял, что при отладке true stati c файлы будут обслуживаться из STATICFILES_DIRS, в то время как если отладка - False stati c файлы будут обслуживаться из STATIC_ROOT, поэтому, когда я отключу отладку, он пытался получить файлы из STATIC_ROOT, и вот трюк, когда вы собираете c вручную файлы будут собираться t o папка с именем staticfiles (ваши настройки будут отменены настройками heroku), а если вы включите collectstati c heroku будет собирать файлы stati c в / tmp / dir, тогда ваше приложение в обоих случаях попытается получить файлы из / tmp / которые не существуют, если вы собрали c вручную.

вывод:

  • Намного лучше не использовать stati c url файла внутри Django кода.
  • Если у вас возникли проблемы с collectstai c во время развертывания вашего проекта на heroku, попробуйте исправить это, а не отключить.

Я знаю, что это немного долго, но надеюсь будет полезно.

0 голосов
/ 06 мая 2020

Самый простой способ сделать это - просто установить значение heroku следующим образом:

heroku config:set DEBUG_VALUE="False"

Затем в вашем settings.py проверьте строковое значение, которое вы сохранили, следующим образом:

DEBUG = (os.environ.get('DEBUG_VALUE') == 'True')

Поскольку для DEBUG_VALUE установлено значение «Ложь», DEBUG будет иметь значение Ложь в производстве.

...