{% load static%} и {% load staticfiles%}: что предпочтительнее?

Я не уверен, в чем разница, похоже, они оба работают. Я гуглил вокруг, и кажется, что они в значительной степени одно и то же. просто из любопытства, какой человек использует в поле?

Я читал это, но до сих пор не знаю, когда использовать, какие и какие люди используют в поле. мой работает для них обоих. Сначала я подумал, что он загружает статическую папку, но она работает и для статических файлов ... -

12 голосов | спросил user5659156 22 TueEurope/Moscow2015-12-22T22:19:12+03:00Europe/Moscow12bEurope/MoscowTue, 22 Dec 2015 22:19:12 +0300 2015, 22:19:12

1 ответ


0

На данный момент (Django 1.9 и более ранние версии) {% load staticfiles %} загружает static templatetag из приложения contrib, которое имеет больше возможностей, чем встроенный django.core.static.

Самое важное отличие состоит в том, что staticfiles может управлять файлами, хранящимися в CDN, так как его преобразователь может, например, управлять хэшами. core.static добавляет только STATIC_URL к статическому имени файла , чего недостаточно, если вы обрабатываете свои файлы (например, добавляете хеш md5 для очистки кэша между выпусками)

Это различие связано с тем, что управление файлами нелокального хранилища не было предназначено для включения в базовый пакет Django, но все еще было полезно для многих разработчиков, чтобы быть реализованным в качестве официального пакета contrib. Поэтому, если вы начали использовать staticfiles, вы должны были не забывать использовать его в своих шаблонах. НО, могут возникнуть некоторые проблемы, например, когда с помощью Media classes , поэтому было решено объединить эти две метки-шаблоны в одну и использовать другое поведение, если разработчик имеет django.contrib.staticfiles в INSTALLED_APPS или нет.

Из Django 1.10 и далее (также посмотреть тикет в трекере Django ), {% load static %} будет использовать staticfiles для внутреннего использования , если активирован (иначе сохранить поведение по умолчанию ), и тег шаблона в пакете contrib будет исключен во избежание путаницы.

TL; DR

  • До Django 1.10 : staticfiles загружает теги-шаблоны, которые могут управлять нелокальным хранилищем, где static не может (или не легко);
  • Из Django 1.10 : contrib.staticfiles приложение все еще существует, но его шаблоны будут удалены только {% static %} теги-шаблоны остаются;
  • Из Django 2.0 (я считаю): {% load staticfiles %} удалено.

Пока что используйте теги-шаблоны staticfiles, если вы используете соответствующее приложение contrib (и вы знаете, почему вы его используете) до Django 1.10 в противном случае просто используйте static.

ответил Maxime Lorant 22 TueEurope/Moscow2015-12-22T23:33:38+03:00Europe/Moscow12bEurope/MoscowTue, 22 Dec 2015 23:33:38 +0300 2015, 23:33:38

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132