Django static files разница в работе локально и в сети

world! У меня вопрос уровня новичка. Дело такое: Решил на django 3.2.12 написать маленький website. Создал проект, приложение и html. В настройках settings.py указал все необходимые данные, включая выгрузку с папки static. В саму папку static поставил картинку. Если запускать все локально (127.0.0.1), все работает как "Кока-Кола", но если выгрузить в сеть, то сервер не находит картинку. Я долго мучился и только потом вспомнил про функцию collectstatic. И картинка высветилась. Вопрос следующий: Это что получается, что при каждом пользователе выложивший свое изображение на website'e я буду обязан выполнять collectstatic??? Можно обойтись без этого? Выгрузка изображения происходит не в models.py, а самым обычным способом:

<!DOCTYPE HTML>
<HTML LANG="en">
{% load static %}
<head>
</head>

<body>
<img src={% static "fdog.jpg" %}>
</body>

Я тут посидел и подумал. Понял, что я написал глупость. Когда пользователь выкладывает изображение оно не "вшивается" в шаблон, а содержится где-то и выгружается с помощью models. Логично. Также можно через js. Ок, перезадам вопрос: Для чего нужно collectstatic и почему локально изображения выкладываются без него, а на сервере он необходим? И можно ли обойтись без него?

Дело в том что в производстве django не обслуживает ваши статические файлы, это выполняет ваш вэб-сервер(apche, nginx и т.д) Вам необходимо указать вашему вэб-серверу где находятся статические файлы. Также вам необходимо указать STATIC_ROOT в место STATICFILES_DIRS, подробней о статике тут

Вернуться на верх