Django TemplateTag, вычисляющий логическое значение - PullRequest
7 голосов
/ 18 мая 2011

Можно ли создать тег шаблона Django, который оценивается как логическое значение?

Например, могу ли я сделать:

{% if my_custom_tag %}
    ..
{% else %}
    ..
{% endif %}

В данный момент я написал его кактег, который отлично работает, как это:

{% my_custom_tag as var_storing_result %}

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

Спасибо!

Ответы [ 3 ]

5 голосов
/ 18 мая 2011

Одной из альтернатив может быть определение пользовательского фильтра, который возвращает логическое значение:

{% if my_variable|my_custom_boolean_filter %}

но это будет работать только в том случае, если ваш тег зависит от какой-либо другой переменной шаблона.

5 голосов
/ 08 июля 2014

На самом деле ... то, что вы можете сделать, это зарегистрировать тег как assignment_tag вместо simple_tag Тогда в вашем шаблоне вы можете просто сделать {% my_custom_tag as var_storing_result %} один раз, а затем регулярно делать блоки, где когда-либо вы хотите вычислить логическое значение. Супер полезно! Например

Шаблон тега

def my_custom_boolean_filter:
    return True

register.assignment_tag(my_custom_boolean_filter)

Template

{% my_custom_boolean_filter as my_custom_boolean_filter %}


{% if my_custom_boolean_filter %}
    <p>Everything is awesome!</p>
{% endif %}

Официальный тег назначения документа

2 голосов
/ 18 мая 2011

Вы должны написать собственный тег {% if%}, чтобы справиться с этим.На мой взгляд, лучше использовать то, что у вас уже есть.Он хорошо работает, и любой другой разработчик может легко понять, что происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...