{% нагрузки статического %} и {% нагрузки staticfiles %}: который является предпочтительным?
Я не уверен, в чем разница, кажется, что они оба работают. Я погуглил вокруг, и кажется, что они в значительной степени одно и то же. просто из любопытства, какой из них люди используют в полевых условиях?
Я читал это, но до сих пор не знаю, когда использовать, и какие люди в поле используют. мой работает на них обоих. сначала я думал, что он загружает статическую папку, но он работает и для staticfiles... –
1 ответов
на данный момент (Django 1.9 и ранее),{% load staticfiles %}
нагрузки static
templatetag из приложения contrib, который имеет больше возможностей, чем встроенный django.core.static
.
самая важная разница staticfiles
может управлять файлами, хранящимися на CDN, так как его распознаватель может управлять хэшами, например. core.static
добавить только STATIC_URL
к статическому имени файла, которого недостаточно, если вы обрабатываете свои файлы (например, добавляя хэш md5 для очистки кэша между выпусками)
этот разница связана с тем, что управление нелокальными файлами хранения не было выделено для включения в основной пакет Django, но по-прежнему было полезно многим разработчикам для реализации в качестве официального пакета contrib. Поэтому, если вы начали использовать staticfiles
, вы должны помнить, чтобы использовать его каждый в свои шаблоны. Но, некоторые проблемы могут появиться, например, когда используя Media
классы таким образом, было принято решение объединить эти два templatetags в один и использовать другое поведение имеет ли разработчик django.contrib.staticfiles
в своем INSTALLED_APPS
или нет.
С Django 1.10 и далее (кроме см. билет в Django tracker), то {% load static %}
собирается использовать staticfiles
внутри если активировать (oherwise сохраняет поведение по умолчанию), и templatetag в пакете contrib будет устаревшим, чтобы избежать путаницы.
TL; DR
-
Перед Django 1.10:
staticfiles
загружает templatetags, которые могут управлять нелокальным хранилищем, гдеstatic
не может (или не легко) ; -
От Джанго 1.10:
contrib.staticfiles
приложение все еще существует, но его templatetags будут удалены только{% static %}
templatetags остается ; -
Из Django 2.0 (я считаю):
{% load staticfiles %}
удалены.
для staticfiles
templatetags если вы используете соответствующее приложение contrib (и вы знаете, почему вы его используете) до Django 1.10, в противном случае просто используйте static
.