строку:
DEBUG = bool(os.environ.get('DEBUG', default=0))
Значение переменной окружения DEBUG=1
Проблема: при таком варианте, сервер ведет себя как в режиме разработки(перезапускается при изменении файлов), но не подгружает статические файлы.
Что сделал:
1. запустил manage.py shell и проверил, что лежит в переменной(дальше не копипаста) DEBUG
from django.conf import settings
settings.DEBUG
[out] True
type(settings.DEBUG)
[out] <class 'bool'>
2. Поменял строку с указанием DEBUG в settings.py на
DEBUG=True
Статические файлы стали подгружаться
Вопрос: кто-то встречал такую проблему или может есть советы, куда копать, чтобы понять что происходит?
django 3.2.4
На сервере статика должнаотдаваться nginx, а что за волшебство происходит с DEBUG не знаю)
на проде так и настроил, но на локальной машине удобнеe задать переменные окружения и запускать через runserver меня в тупик скорее поведение django поставило, на первый взгляд в settings.DEBUG при любом варианте лежит True, почему при DEBUG = bool(os.environ.get('DEBUG', default=0)) статические файлы не подгружаются, а при DEBUG=True подгружаются
А меняешь, прям эту же строку?
ну, комментирую DEBUG = True и сразу под ней пишу свою
А точно в переменной окружения есть значение?
echo $DEBUG [out] 1 Без нее бы DEBUG = bool(os.environ.get('DEBUG', default=0)) выдавало False
А проект запускается из консольки? т.е. в одной консольке запускается shell и runserver? Один останавливается и другой запускается?
запускал в соседних, не обратил внимания был запущен runsrver при запуске shell(при каждом изменении shell перезапускаю) или нет, могу проверить если есть идея Сейчас задал export DEBUG= но в shell он все еще True
идею понял, сейчас проверю
А вообще, чтобы не сттрадать с этими переменными окружения, есть вот такая штука https://pypi.org/project/python-environ/
в той же консоли, что и запуск runserver echo $DEBUG [out] 1 Но manage.py shell from django.conf import settings settings.DEBUG [out] False Стало страннее, но куда копать понятно) спасибо, и за либу
Обсуждают сегодня