Flask

6. Подробнее о шаблонах 1

Шаблоны позволяют модифицировать html код так, чтобы была "давать на вход" параметры.
К примеру, Вы хотите, чтобы страница в некотором месте писала номер посещения. Тогда с помощью шаблона можно дать возможность серверу указать номер посещения при обработке шаблона, и таким образом страница будет каждый раз отличаться номером посещения.

Синтаксис внутри самого шаблона: (звёздочки указаны для удобства восприятия, писать их в шаблоне не нужно)

{{ *название переменной* }} # напечатать содержимое переменной
{% *некоторое выражение* %} # используется для if, for и прочих конструкций
{# *комметарий* #}          # используется для комментариев

Пример:

<!DOCTYPE html>
<html>
<head>
<title>
Начальная страница!
</title>
</head>
<body>
Я {{ content1 }}. <br>
Вот содержимое content2: <br>
{{ content2|safe }} <br>
А вот содержимое массива data: <br>
{% for element in data %}
{{ element }} <br>
{% endfor %}
</body>
</html>

Для того, чтобы задать значение переменной (и в принципе воспользоваться шаблоном), нужно воспользоваться функцией render_template. Ранее мы использовали её для того, чтобы возвращать HTML страницы, но подав в render_template дополнительные параметры мы сможем воспользоваться всем функционалом шаблонов. 
Пример python кода:

from flask import Flask, render_template, url_for

app = Flask(__name__)

@app.route("/")
def index():
  return render_template('index.html', content1='Alexey Mischenko', content2='<button>БЕСПОЛЕЗНАЯ КНОПКА</button>', data=[1,2,3])

app.run()

Как можно заметить, для того, чтобы подставить значение переменной в шаблон, нужно указать в функции имя переменной и её значение.

Обратите внимание, что content2 окажется именно кнопкой, т.к. в шаблоне прописан "фильтр" safe. Если его убрать, то будет написано <button>, и никакой кнопки не будет.