Наконец проблема решена, на самом деле было две проблемы:
- Первая: Я использовал
из 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, попробуйте исправить это, а не отключить.
Я знаю, что это немного долго, но надеюсь будет полезно.