Метод template_test
Метод template_test применяется к приложению
Flask и добавляет в окружение Jinja пользовательскую
проверку. Первым параметром передаётся имя проверки,
под которым она будет доступна в шаблоне. Вторым
параметром можно передать функцию проверки. Если
второй параметр не указан, метод возвращает декоратор.
Синтаксис
app.template_test(name, [test_function])
Пример
Давайте зарегистрируем проверку even, которая
определяет, является ли число чётным:
from flask import Flask, render_template
app = Flask(__name__)
@app.template_test('even')
def is_even(number):
return number % 2 == 0
@app.route('/')
def index():
return render_template('index.html', number=4)
Теперь используем проверку в шаблоне:
{% if number is even %}
<p>even</p>
{% else %}
<p>odd</p>
{% endif %}
Результат выполнения кода:
<p>even</p>
Пример
Давайте зарегистрируем проверку startswith
без использования декоратора, передав функцию вторым
параметром:
from flask import Flask, render_template
app = Flask(__name__)
def starts_with(value, prefix):
return value.startswith(prefix)
app.template_test('startswith', starts_with)
@app.route('/')
def index():
return render_template('index.html', text='abcde')
Теперь используем проверку в шаблоне:
{% if text is startswith('abc') %}
<p>yes</p>
{% else %}
<p>no</p>
{% endif %}
Результат выполнения кода:
<p>yes</p>
Смотрите также
-
метод
template_filter,
который регистрирует фильтр для Jinja-шаблонов -
метод
template_global,
который регистрирует глобальную функцию для Jinja-шаблонов -
атрибут
jinja_env,
который хранит окружение Jinja приложения -
класс
Flask,
который представляет приложение Flask