Как вызвать функцию Django из шаблона и сохранить возврат в переменной

Контекст:

У меня есть фрагмент HTML, который я хочу рассеять в шаблоне на случай, если функция вернет "true".

Детали:

Моя функция

def show_avg_kpi():
    return config.avg_times_visible
register.filter('show_avg_kpi', show_avg_kpi)

Шаблон (это кусок кода для отображения или нет):

{% if show_avg_kpi %}
  <HTML CODE>
{% endif %}

Мне нужно что-то подобное, но я не знаю, как сохранить результат функции show_avg_kpi в переменной, чтобы использовать его с тегами {% if %}

Заранее спасибо.

Вы можете использовать register.simple_tag следующим образом

@register.simple_tag
def show_avg_kpi():
    return config.avg_times_visible

и в вашем шаблоне следующим образом

{% show_avg_kpi as your_var %}
{% if your_var %}
    your code
{% endif %}

Теперь show_avg_kpi будет вызываться только один раз

Я думаю, вы можете использовать теги {% с %}. т.е.:

{% with my_var=show_avg_kpi %} 
    {% if my_var=condition %}
        HTML CODE
    {% endif %}
{% endwith %}

Но вы можете использовать my_var только внутри оператора with.

Другой подход заключается в передаче переменной из представления.

Вернуться на верх