Тег test
Тег test применяется внутри шаблона Jinja
для проверки значения на соответствие
пользовательскому тесту. Тест - это функция,
зарегистрированная в приложении Flask через
app.template_test или вошедшая в набор
встроенных тестов Jinja. Синтаксис тега
используется совместно с оператором is
и выглядит как значение is имя_теста.
Результатом проверки является булево значение,
которое обычно применяется в условиях if.
Синтаксис
{% if value is test_name %}
...
{% endif %}
Пример
Давайте зарегистрируем собственный тест
is_even, проверяющий чётность числа,
и применим его в шаблоне:
from flask import Flask, render_template
app = Flask(__name__)
@app.template_test('is_even')
def is_even(value):
return value % 2 == 0
@app.route('/')
def index():
return render_template('index.html', num=4)
Теперь используем зарегистрированный тест в шаблоне:
{% if num is is_even %}
<p>even</p>
{% else %}
<p>odd</p>
{% endif %}
Результат выполнения кода:
<p>even</p>
Пример
Встроенные тесты Jinja также доступны через
тег test. Давайте проверим значение
на соответствие встроенному тесту
defined:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html', text='abcde')
Применим встроенный тест defined
к переменной text:
{% if text is defined %}
<p>{{ text }}</p>
{% endif %}
Результат выполнения кода:
<p>abcde</p>