Метод context_processor
Метод context_processor применяется к приложению Flask
и регистрирует функцию-обработчик, которая автоматически
вызывается перед рендерингом любого шаблона. Функция должна
возвращать словарь, ключи которого становятся переменными,
доступными в Jinja-шаблонах. Это удобно для передачи данных,
нужных на всех страницах сайта, например имени пользователя
или настроек сайта.
Синтаксис
@app.context_processor
def func():
return dict
Пример
Давайте добавим переменную site_name во все шаблоны:
from flask import Flask, render_template
app = Flask(__name__)
@app.context_processor
def inject_site_name():
return {'site_name': 'My Site'}
@app.route('/')
def index():
return render_template('index.html')
Теперь используем переменную в шаблоне:
<p>{{ site_name }}</p>
Результат выполнения кода:
<p>My Site</p>
Пример
Давайте добавим несколько переменных и используем их в шаблоне:
from flask import Flask, render_template
app = Flask(__name__)
@app.context_processor
def inject_globals():
return {
'user': 'abcde',
'items': ['a', 'b', 'c', 'd', 'e']
}
@app.route('/')
def index():
return render_template('index.html')
Используем переменные в шаблоне:
<p>{{ user }}</p>
<ul>
{% for item in items %}
<li>{{ item }}</li>
{% endfor %}
</ul>
Результат выполнения кода:
<p>abcde</p>
<ul>
<li>a</li>
<li>b</li>
<li>c</li>
<li>d</li>
<li>e</li>
</ul>
Смотрите также
-
класс
Flask,
который представляет приложение Flask -
метод
template_global,
который регистрирует глобальную функцию для шаблонов -
метод
template_filter,
который регистрирует фильтр для шаблонов -
метод
route,
который регистрирует обработчик URL