Форум сайта python.su
По умолчанию статические файлы Django должны храниться в папке static, но какие тогда файлы хранятся в папке media и в чём их кардинальное отличие от первых? Буду признателен за любой ответ по данному вопросу.
Отредактировано vadval15 (Авг. 4, 2020 16:42:09)
Офлайн
vadval15Статические они потому и статические, потому что не подразумевают никакого динамического изменения. Каталог медиа нужен для того, чтобы ваши пользователи могли загружать в систему файлы и удалять их. Например, у вас есть админка сайта, в админке вы настраивате ваш сайт, например добавляете-удаляете статьи, к статье вы можете прикрепить какие-то изображения. Куда вы планируете загружать эти изображения?
По умолчанию статические файлы Django должны храниться в папке static, но какие тогда файлы хранятся в папке media и в чём их кардинальное отличие от первых? Буду признателен за любой ответ по данному вопросу
Офлайн
Иначе говоря, если вы продадите движок вашего сайта, то покупатель должен получить его со всей статикой в каталоге static, но с пустым каталогом media
Офлайн
Спасибо за ответ. Для одной из библиотек, easy-thumbnails, необходимо, чтобы исходные файлы изображений, а также миниатюры, статические по своей сути, находились в какой-либо из папок media. При этом они, в отличие от аналогичных файлов папки static, перестают отображаться на сайте. Можно ли как-то избежать отрицательных последствий такого разделения?
Офлайн
vadval15настройте ваш веб-сервер на отдачу изображений из media каталога и не будет никаких проблем.
Можно ли как-то избежать отрицательных последствий такого разделения?
Офлайн
Спасибо за ответ. Насколько мне известно, отображение файлов из папки static производится с помощью соответствующего приложения, подключаемого в файле настроек settings.py. Может быть, подобное приложение имеется и для папки media?
Офлайн
vadval15
Насколько мне известно, отображение файлов из папки static производится с помощью соответствующего приложения
vadval15Чтобы не гадать, нужно читать документацию
Насколько мне известно
Офлайн
Спасибо за совет, но я привык решать проблемы по мере их поступления. А данная проблема пока решается лишь переносом папки 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)
Офлайн
В конфиг файле джанги должно быть что то вроде:
MEDIA_ROOT = os.path.join(VAR_DIR, 'htdocs/media') MEDIA_URL = '/media/'
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()
никакого результата не даёт.А результат каким образом планируется получить ? Напрямую запрос к файлу через браузер или каким нибудь тегом в темплейте ?
Офлайн
Спасибо за ответ. Оказывается, любая из рекомендуемых для включения в файл urls.py строк позволяет использовать файлы из папки media в качестве статических, но с соблюдением одного условия: она должна располагаться перед шаблоном URL-адреса, содержащим регулярное выражение, охватывающее все возможные символы, если такой присутствует в указанном файле. Это на первый взгляд очевидное условие заставляет внимательнее добавлять новую строку к уже имеющемуся списку шаблонов URL-адресов.
Офлайн