Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 4, 2020 16:37:57

vadval15
Зарегистрирован: 2019-08-11
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Хранение статических файлов в Django

По умолчанию статические файлы Django должны храниться в папке static, но какие тогда файлы хранятся в папке media и в чём их кардинальное отличие от первых? Буду признателен за любой ответ по данному вопросу.

Отредактировано vadval15 (Авг. 4, 2020 16:42:09)

Офлайн

#2 Авг. 4, 2020 17:07:33

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8006
Репутация: +  558  -
Профиль   Отправить e-mail  

Хранение статических файлов в Django

vadval15
По умолчанию статические файлы Django должны храниться в папке static, но какие тогда файлы хранятся в папке media и в чём их кардинальное отличие от первых? Буду признателен за любой ответ по данному вопросу
Статические они потому и статические, потому что не подразумевают никакого динамического изменения. Каталог медиа нужен для того, чтобы ваши пользователи могли загружать в систему файлы и удалять их. Например, у вас есть админка сайта, в админке вы настраивате ваш сайт, например добавляете-удаляете статьи, к статье вы можете прикрепить какие-то изображения. Куда вы планируете загружать эти изображения?



Офлайн

#3 Авг. 4, 2020 17:08:36

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8006
Репутация: +  558  -
Профиль   Отправить e-mail  

Хранение статических файлов в Django

Иначе говоря, если вы продадите движок вашего сайта, то покупатель должен получить его со всей статикой в каталоге static, но с пустым каталогом media



Офлайн

#4 Авг. 5, 2020 02:17:21

vadval15
Зарегистрирован: 2019-08-11
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Хранение статических файлов в Django

Спасибо за ответ. Для одной из библиотек, easy-thumbnails, необходимо, чтобы исходные файлы изображений, а также миниатюры, статические по своей сути, находились в какой-либо из папок media. При этом они, в отличие от аналогичных файлов папки static, перестают отображаться на сайте. Можно ли как-то избежать отрицательных последствий такого разделения?

Офлайн

#5 Авг. 5, 2020 11:10:07

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8006
Репутация: +  558  -
Профиль   Отправить e-mail  

Хранение статических файлов в Django

vadval15
Можно ли как-то избежать отрицательных последствий такого разделения?
настройте ваш веб-сервер на отдачу изображений из media каталога и не будет никаких проблем.



Офлайн

#6 Авг. 6, 2020 02:01:06

vadval15
Зарегистрирован: 2019-08-11
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Хранение статических файлов в Django

Спасибо за ответ. Насколько мне известно, отображение файлов из папки static производится с помощью соответствующего приложения, подключаемого в файле настроек settings.py. Может быть, подобное приложение имеется и для папки media?

Офлайн

#7 Авг. 6, 2020 10:43:21

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8006
Репутация: +  558  -
Профиль   Отправить e-mail  

Хранение статических файлов в Django

vadval15
Насколько мне известно, отображение файлов из папки static производится с помощью соответствующего приложения

давайте определимся для начала, что ваш проект в релизе будет работать не так как на этапе разработки. Вам нужен веб-сервер, например, nginx, который и будет сёрвить всю статику. Я бы вам предложил уже сейчас попробовать настроить настоящее рабочее окружение, чтобы хотя бы понимать разницу.

vadval15
Насколько мне известно
Чтобы не гадать, нужно читать документацию
https://docs.djangoproject.com/en/3.0/howto/static-files/



Офлайн

#8 Авг. 9, 2020 03:59:49

vadval15
Зарегистрирован: 2019-08-11
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Хранение статических файлов в Django

Спасибо за совет, но я привык решать проблемы по мере их поступления. А данная проблема пока решается лишь переносом папки media внутрь папки static. Изложенное же в документации (https://djbook.ru/rel1.8/howto/static-files/index.html) предложение по включению в файл urls.py при MEDIA_URL=/media/ дополнительной строки:

 + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
никакого результата не даёт.

Офлайн

#9 Авг. 9, 2020 17:47:21

VadimK
Зарегистрирован: 2013-07-03
Сообщения: 184
Репутация: +  14  -
Профиль   Отправить e-mail  

Хранение статических файлов в Django

В конфиг файле джанги должно быть что то вроде:

 MEDIA_ROOT = os.path.join(VAR_DIR, 'htdocs/media')
MEDIA_URL = '/media/'
где в первой строке указывается полный путь куда грузить медиа файлы, а во второй относительный путь в браузере.

Далее в urls что то вроде такого:
 from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.conf.urls.static import static
from django.conf.urls import include, url
urlpatterns = [
    url(r'^admin/', admin.site.urls),
# и прочие адреса проекта
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + staticfiles_urlpatterns()

Тогда джанга будет отдавать /media/ + /static/
Но по хорошему это она должна делать только на девелоперской машине. В продакшене с этих директорий раздает непосредственно вэб сервер, т.е. запрос к джанге дойти не может.

никакого результата не даёт.
А результат каким образом планируется получить ? Напрямую запрос к файлу через браузер или каким нибудь тегом в темплейте ?

Офлайн

#10 Авг. 15, 2020 15:46:37

vadval15
Зарегистрирован: 2019-08-11
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Хранение статических файлов в Django

Спасибо за ответ. Оказывается, любая из рекомендуемых для включения в файл urls.py строк позволяет использовать файлы из папки media в качестве статических, но с соблюдением одного условия: она должна располагаться перед шаблоном URL-адреса, содержащим регулярное выражение, охватывающее все возможные символы, если такой присутствует в указанном файле. Это на первый взгляд очевидное условие заставляет внимательнее добавлять новую строку к уже имеющемуся списку шаблонов URL-адресов.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version