Метод template_global
Метод template_global применяется к объекту
Blueprint и регистрирует переданную функцию
в качестве глобальной переменной шаблонизатора Jinja.
Это значит, что такая функция будет доступна во всех
шаблонах, связанных с данным blueprint. Первым
параметром можно передать имя функции в шаблонах,
а вторым - саму функцию. Если имя не указано,
используется атрибут __name__ функции.
Синтаксис
bp.template_global([name])
Пример
Давайте создадим blueprint и зарегистрируем
глобальную функцию greet, которая принимает
имя и возвращает приветствие:
from flask import Flask, Blueprint, render_template
bp = Blueprint('bp', __name__)
@bp.template_global()
def greet(name):
return 'hello ' + name
app = Flask(__name__)
app.register_blueprint(bp)
@app.route('/')
def index():
return render_template('index.html')
Теперь используем функцию greet в шаблоне:
<p>{{ greet('user') }}</p>
Результат выполнения кода:
<p>hello user</p>
Пример
Давайте передадим первым параметром собственное имя функции в шаблонах:
from flask import Flask, Blueprint, render_template
bp = Blueprint('bp', __name__)
@bp.template_global('say_hi')
def greet(name):
return 'hello ' + name
app = Flask(__name__)
app.register_blueprint(bp)
@app.route('/')
def index():
return render_template('index.html')
Теперь в шаблоне функция доступна под именем say_hi:
<p>{{ say_hi('abcde') }}</p>
Результат выполнения кода:
<p>hello abcde</p>
Смотрите также
-
класс
Blueprint,
который создаёт группу маршрутов приложения -
метод
template_filter,
который регистрирует фильтр Jinja -
метод
context_processor,
который добавляет переменные в контекст шаблона -
метод
route,
который вешает обработчик на адрес