{% нагрузки статического %} и {% нагрузки 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.