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

Функция stream_template

Функция stream_template применяется для потоковой отдачи шаблона. В отличие от render_template, она не собирает весь HTML в одну строку, а возвращает генератор, который отдаёт части шаблона по мере их формирования. Первым параметром передаётся имя шаблона, далее - контекстные переменные в виде именованных аргументов. Это удобно для больших страниц: браузер получает первые фрагменты, пока остальная часть ещё вычисляется.

Синтаксис

stream_template(template_name_or_list, **context)

Пример

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

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

Сам шаблон может быть обычным:

<p>{{ text }}</p>

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

<p>abcde</p>

Пример

Потоковость особенно заметна, когда шаблон отдаёт данные по частям в цикле:

from flask import Flask, stream_template app = Flask(__name__) @app.route('/') def index(): return stream_template('list.html', arr=['a', 'b', 'c', 'd', 'e'])

В шаблоне переберём массив:

{% for elem in arr %} <p>{{ elem }}</p> {% endfor %}

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

<p>a</p> <p>b</p> <p>c</p> <p>d</p> <p>e</p>

Пример

Функция возвращает генератор, поэтому его можно обернуть в свой потоковый ответ:

from flask import Flask, stream_template app = Flask(__name__) @app.route('/') def index(): gen = stream_template('index.html', text='hello') return app.response_class(gen, mimetype='text/html')

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

<p>hello</p>

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

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