РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
224 of 643 menu

Функция namespace

Функция namespace применяется внутри Jinja-шаблонов и создаёт объект-контейнер для именованных значений. Первым параметром передаются значения через именованные аргументы, которые становятся атрибутами объекта. В отличие от обычного словаря, атрибуты объекта namespace можно изменять прямо в шаблоне, и эти изменения сохраняются между итерациями циклов.

Синтаксис

{% set obj = namespace(name=value, ...) %}

Пример

Давайте создадим объект с атрибутом count и увеличим его в цикле:

{% set res = namespace(count=0) %} {% for elem in ['a', 'b', 'c', 'd', 'e'] %} {% set res.count = res.count + 1 %} {% endfor %} <p>{{ res.count }}</p>

Результат выполнения кода:

<p>5</p>

Пример

Давайте соберём строку из элементов массива с помощью объекта namespace:

{% set res = namespace(text='') %} {% for elem in ['a', 'b', 'c', 'd', 'e'] %} {% set res.text = res.text + elem %} {% endfor %} <p>{{ res.text }}</p>

Результат выполнения кода:

<p>abcde</p>

Пример

Давайте передадим объект namespace из обработчика Flask в шаблон:

from flask import Flask, render_template app = Flask(__name__) @app.route('/') def index(): return render_template('index.html')

Теперь используем функцию namespace в шаблоне:

{% set res = namespace(total=0) %} {% for elem in [1, 2, 3, 4, 5] %} {% set res.total = res.total + elem %} {% endfor %} <p>{{ res.total }}</p>

Результат выполнения кода:

<p>15</p>

Смотрите также

  • тег set,
    который создаёт переменную в шаблоне
  • тег for,
    который перебирает элементы последовательности
  • тег macro,
    который создаёт переиспользуемый блок шаблона
  • функцию render_template,
    которая рендерит Jinja-шаблон
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить