Как прокомментировал Джон Клементс, если debug=False
, то приложение Django staticfiles
отключено.Обычно в производстве используется dedicated web server
(сервер, на котором не работает Django для обслуживания статических файлов).Следовательно, для решения вашей проблемы необходимо настроить дополнительный сервер для обслуживания статических файлов.
Некоторые высокоуровневые шаги:
Перейдите в файл настроек django идобавьте STATIC_ROOT
, который будет каталогом, в который Django будет помещать статические файлы;
Запустите python manage.py collecstatic
, чтобы Django собрал все статические файлы и поместил их в STATIC_ROOT
directory;
Служат файлы в этом каталоге, когда запрос содержит ваш STATIC_URL
в URL (эти запросы обычно содержат /static/
или что-то в этом роде).Например, это можно сделать с сервером Nginx или сервером Apache, как описано в Django docs:
https://docs.djangoproject.com/en/2.2/howto/deployment/wsgi/modwsgi/#serving-files
В терминах конфигурации Nginx, одинкороткий фрагмент, просто чтобы проиллюстрировать такую идею, может выглядеть примерно так:
server {
listen 80;
# hey Nginx, once you see something like /static/ in the url
# try to grab the file that is under the alias directory and
# return to the user
location /static/myapp/ {
alias /var/www/myproject/static/myproject/myapp/;
access_log true;
add_header Cache-Control "max-age=120";
}
}
Подводя итог:
Приложение Django staticfiles
отлично подходит для локальной разработки, но не очень подходит дляпроизводственные приложения.
Следовательно, обслуживание статических файлов обычно должно выполняться выделенным и отдельным сервером, таким как Nginx или Apache, который требует некоторой дополнительной настройки для настройки этих серверов.