Функция stream_template_string
Функция stream_template_string применяется для потокового
рендеринга шаблона, который хранится не в файле, а прямо в строке.
Первым параметром передаётся исходный код шаблона в виде строки,
далее можно передать контекст шаблона, то есть переменные,
доступные внутри шаблона. Функция возвращает итератор, который
отдаёт части отрендеренного шаблона по мере их появления,
а не всю страницу целиком сразу.
В отличие от render_template_string, которая возвращает
готовую строку, stream_template_string возвращает
потоковый ответ, что удобно для больших страниц и медленно
генерируемых данных.
Синтаксис
stream_template_string(source, **context)
Пример
Давайте отрендерим простой шаблон из строки и вернём его через потоковый ответ:
from flask import Flask, stream_template_string
app = Flask(__name__)
@app.route('/')
def index():
return stream_template_string('<p>{{ text }}</p>', text='hello')
Результат выполнения кода:
<p>hello</p>
Пример
Давайте передадим в шаблон список и выведем его элементы в цикле:
from flask import Flask, stream_template_string
app = Flask(__name__)
@app.route('/')
def index():
return stream_template_string(
'{% for elem in arr %}<p>{{ elem }}</p>{% endfor %}',
arr=['a', 'b', 'c', 'd', 'e']
)
Результат выполнения кода:
<p>a</p>
<p>b</p>
<p>c</p>
<p>d</p>
<p>e</p>
Пример
Давайте посмотрим, что функция возвращает итератор, и обойдём его вручную:
from flask import Flask, stream_template_string
app = Flask(__name__)
with app.app_context():
stream = stream_template_string('{{ text }}', text='abcde')
res = list(stream)
print(res)
Результат выполнения кода:
['abcde']
Смотрите также
-
функцию
render_template_string,
которая рендерит строковый шаблон в готовую строку -
функцию
stream_template,
которая потоково рендерит шаблон из файла -
функцию
render_template,
которая рендерит шаблон из файла в готовую строку -
тег
for,
который перебирает элементы внутри шаблона