Использование тега шаблона «с» в сочетании с тегом шаблона «если» - PullRequest
0 голосов
/ 20 мая 2018

В шаблонах Django мы можем использовать with:

{% with total=business.employees.count %}
    {{ total }} employee{{ total|pluralize }}
{% endwith %}

Можем ли мы использовать with в сочетании с if

Я пытался:

{% with a={%if product.url %}product.url{%else%}default{%endif %} %}

но я получаю ошибку:

Could not parse the remainder: '{%if' from '{%if'

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

Фильтр тегов, который может работать:

from django import template

register = template.Library()

@register.simple_tag
def fallback(value, default_value):
     if not value:
         return default_value
     return value

В шаблонах вам необходимо загрузить файлы

{% load app_containing_tag_filters %}

{% with a = product.url|fallback:default %}
     stuffs here
{% endwith %}
0 голосов
/ 20 мая 2018

По крайней мере, язык шаблонов Django довольно глупый - логика не должна присутствовать в шаблоне - поэтому подумайте о теге шаблона => зарегистрируйте свой собственный и попробуйте переместить логику в представление ...

В этом случае вопрос может заключаться в том, почему вы пытаетесь это сделать?

Возможно, вам будет проще использовать переменную непосредственно там, где вам нужно, и в случае ее отсутствия используйте тег / функцию шаблона по умолчанию.:

{{ product.url|default_if_none:default }}

Но в любом случае ваше решение может выглядеть так:

{% with a=default %}
  {% if product.url %}
    {% update_variable product.url as a %}
  {% endif %}
{% endwith %}

А тег вашего шаблона должен выглядеть так:

@register.simple_tag
def update_variable(value):
    return value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...