django Статические файлы на рабочем сервере - PullRequest
1 голос
/ 07 июля 2019

Моя проблема со статическими файлами (img, styles).Мой код работает нормально, без ошибок со статическими файлами, и изображения появляются, когда я запускаю сервер, но когда я делаю (debug = False) изображения и стили исчезают, я запускаю свой код на сервере Linux Ubuntu .... Как сделатьЯ заставляю статические файлы отображаться с (debug = false)?

in settings.py that is my code
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'music/templates/'),
)

В моем html-файле тег изображения выглядит так:

<img src="{% static 'music/login.jpg' %}" width="300" height="300">

1 Ответ

1 голос
/ 07 июля 2019

Как прокомментировал Джон Клементс, если debug=False, то приложение Django staticfiles отключено.Обычно в производстве используется dedicated web server (сервер, на котором не работает Django для обслуживания статических файлов).Следовательно, для решения вашей проблемы необходимо настроить дополнительный сервер для обслуживания статических файлов.

Некоторые высокоуровневые шаги:

  1. Перейдите в файл настроек django идобавьте STATIC_ROOT, который будет каталогом, в который Django будет помещать статические файлы;

  2. Запустите python manage.py collecstatic, чтобы Django собрал все статические файлы и поместил их в STATIC_ROOTdirectory;

  3. Служат файлы в этом каталоге, когда запрос содержит ваш 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, который требует некоторой дополнительной настройки для настройки этих серверов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...