В чем разница между {% load staticfiles%} и {% load staticf%}

Самая важная часть вопроса находится в теме.

Мне интересно, какой тег лучше всего подходит для этого случая. Более того ... Я нашел код, который также использует settings.STATIC_URL, включенный в {{STATIC_URL}} в шаблонах.

Я немного растерялся.

72 голоса | спросил trikoder_beta 16 J0000006Europe/Moscow 2014, 11:24:21

4 ответа


0

Встроенный static тег шаблона "связать [s] со статическими файлами, которые сохранены в STATIC_ROOT".

staticfiles тег static шаблона приложения приложения "использует настроенный STATICFILES_STORAGE хранилище для создания полного URL-адреса для заданного относительного пути ", что" особенно полезно при использовании нелокального хранилища для развертывания файлов ".

Встроенная теговая документация static шаблона (ссылка на которую приведена выше) содержит примечание об использовании staticfiles тег static шаблона приложения contrib, если у вас есть расширенное использование случай, например использование облачного сервиса для обслуживания статических файлов ", и это приводит следующий пример:

{% load static from staticfiles %}
<img src="{% static "images/hi.jpg" %}" alt="Hi!" />

Вы можете использовать {% load staticfiles %} вместо {% load static from staticfiles %} если хотите, но последний более явный.

ответил Nick 17 WedEurope/Moscow2014-12-17T03:01:08+03:00Europe/Moscow12bEurope/MoscowWed, 17 Dec 2014 03:01:08 +0300 2014, 03:01:08
0

Я не знаю, какой должна быть разница, но я нашел разницу в вариантах использования (используя django 1.9.1, работающий через apache, wsgi на Python 3.4). В моем приложении у меня есть несколько изображений в ImageFields в базе данных. Если я использую такой код в моем шаблоне:

<a href="object-{{object.id}}"><img src="{% static object.image %}" height="200px"></a>

тогда, если я использую {% load static %}, django теряет TypeError (Cannot mix str and non-str arguments). Вероятно, это потому, что object.image не является строкой, это ImageField, который преобразуется в строку на более позднем этапе. Однако, если кто-то использует {% load staticfiles %}, такая ошибка не возникает.

К сожалению, я обнаружил эту разницу после нескольких часов попыток отладить проблему. Мне удалось найти обходной путь при использовании первой опции, а именно, добавить метод строкового преобразователя к объекту следующим образом:

#image string
def image_str(self):
    return str(self.image)

Надеюсь, что эти знания кому-нибудь пригодятся.

ответил Deleet 27 Jpm1000000pmWed, 27 Jan 2016 22:56:04 +030016 2016, 22:56:04
0

{% load staticfiles %} очень полезно, когда вы используете различные хранилища, такие как S3, тогда он преобразуется в URL-адреса S3

ответил Dilraj 22 MarpmTue, 22 Mar 2016 21:12:53 +03002016-03-22T21:12:53+03:0009 2016, 21:12:53
0

Просмотрите документы , где хорошее объяснение этого. На самом деле тег шаблона {% static %} знает расположение STATICFILE_STORAGE

Как говорят документы:

 {% load static from staticfiles %} <img src="{% static "images/hi.jpg"
 %}" alt="Hi!" /> The previous example is equal to calling the url method of an instance of STATICFILES_STORAGE with "images/hi.jpg".
     

Это особенно полезно при использовании нелокального хранилища для   развернуть файлы, как описано в разделе Обслуживание статических файлов из облака   услуга или CDN.

     

Если вы хотите получить статический URL-адрес без его отображения, вы можете   используйте немного другой вызов:

{% load static from staticfiles %}
{% static "images/hi.jpg" as myphoto %}
<img src="{{ myphoto }}" alt="Hi!" />

Надеюсь, это поможет !!

ответил S.Ali 16 J0000006Europe/Moscow 2014, 11:40:23

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

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

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