Почему страница администрирования Django и остальные CSS-файлы и изображения на моих страницах не найдены?
метод GET возвращает 404 в консоли, хотя поиск ведется по правильному пути к файлу.
EDIT: я нашел другой пост, в котором говорилось, что я должен включить DEBUG в файле settings.py. И ЭТО РАБОТАЛО!!! теперь, после попытки вернуть значение False, он все еще работал, как и ожидалось. так что второй вопрос - почему это не сработало с первой попытки?
Я убедился, что статические пути в файле settings.py верны, но, похоже, проблема в самом django, так как на странице администрирования django не отображается CSS. Я попробовал python manage.py collectstatic, но это не помогло. Я пробовал перезапускать сервер несколько раз и все равно
еще одна правка: я только что обнаружил, что некоторые страницы загружают свои изображения и CSS-файлы, пока отладка установлена на True. но страницы, которые я не загрузил, не загрузили свои. после установки DEBUG на True снова и загрузки страниц, все они теперь работают, пока DEBUG снова установлен на False. подумал, что это может помочь выяснить, почему не работает DEBUG, установленный на False
EDIT: я нашел другой пост, в котором говорилось, что я должен включить DEBUG в файле settings.py. И ЭТО РАБОТАЛО!!! теперь, после попытки вернуть его в False, он все еще работал, как и ожидалось. так что второй вопрос - почему он не работал с первой попытки?
It keeps working due to caching. If you clear the cache, with Ctrl + F5, it will again not work with the static files.
Я убедился, что статические пути в файле settings.py верны, но, похоже, проблема в самом django, так как на странице администрирования django не отображается CSS. Я попробовал python manage.py collectstatic, но это не помогло, я пробовал перезапускать сервер несколько раз и все равно.
collectstatic
[Django-doc] does not solve this problem. collectstatic
just copies the static/
directories of all apps to a general static directory specified by the STATIC_ROOT
setting [Django-doc], but it does not serve the files.
Django не обслуживает статические файлы в продакшене, в этом нет особого смысла: это было бы неэффективно. Обычно вы позволяете Nginx, Apache или другому веб-серверу, который обрабатывает запросы первым.
Для Nginx это выглядит следующим образом:
server {
listen 80;
server_name server_domain_or_IP;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /parent/directory/of/static;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
поэтому Nginx обслуживает файлы, а не Django.