Как условно применить фильтр шаблона в Django?

Предположим, у меня есть шаблон Django с

<div><b>{{some.long.expression.with.stuff|filter1}}</b></div>

и я хочу применить filter1 только если my_condition равно True.

Какой способ лучше? Вот многословный способ с повторениями:

{% if my_condition %}
<div><b>{{some.long.expression.with.stuff|filter1}}</b></div>
{% else %}
<div><b>{{some.long.expression.with.stuff}}</b></div>
{% endif %}

Вот чуть менее многословный, более трудный для чтения, все еще с некоторыми повторениями:

<div><b>{% if my_condition %}{{some.long.expression.with.stuff|filter1}}{% else %}{{some.long.expression.with.stuff}}{% endif %}</b></div>

Предложения?

Вы можете работать с тегом шаблона {% with … %} … {% endwith %}:

{% with somevar=some.long.expression.with.stuff %}
<div><b>{% if my_condition %}{{ somevar|filter1 }}{% else %}{{ somevar }}{% endif %}</b></div>
{% endwith %}
Вернуться на верх