Метод template_global
Метод template_global применяется к приложению
Flask и делает функцию доступной во всех Jinja-шаблонах
как глобальный объект. Первым параметром передаётся
имя, под которым функция будет доступна в шаблоне.
Если имя не указано, используется имя самой функции.
Зарегистрированную функцию можно вызывать в шаблоне
напрямую, без передачи её через контекст.
Синтаксис
@app.template_global([name])
Пример
Давайте зарегистрируем функцию format_price
как глобальную и вызовем её в шаблоне:
from flask import Flask, render_template
app = Flask(__name__)
@app.template_global('format_price')
def format_price(value):
return f'${value:.2f}'
@app.route('/')
def index():
return render_template('index.html', price=42)
Шаблон index.html:
<p>{{ format_price(price) }}</p>
Результат выполнения кода:
<p>$42.00</p>
Пример
Давайте зарегистрируем функцию current_year
без явного имени и вызовем её в шаблоне:
from flask import Flask, render_template
from datetime import datetime
app = Flask(__name__)
@app.template_global()
def current_year():
return datetime.now().year
@app.route('/')
def index():
return render_template('index.html')
Шаблон index.html:
<p>Year: {{ current_year() }}</p>
Результат выполнения кода:
<p>Year: 2026</p>
Смотрите также
-
метод
template_filter,
который регистрирует фильтр для шаблонов -
метод
template_test,
который регистрирует проверку для шаблонов -
метод
context_processor,
который добавляет переменные в контекст шаблона -
атрибут
jinja_env,
который хранит окружение Jinja приложения