Функция rebase
Функция rebase применяется внутри шаблона SimpleTemplate
и указывает родительский шаблон, от которого наследуется текущий.
Первым параметром передаётся имя родительского шаблона.
Вместе с rebase используются теги block и end,
которые определяют переопределяемые участки разметки.
Когда Bottle рендерит дочерний шаблон, он сначала подставляет в родительский шаблон содержимое всех блоков, определённых в дочернем шаблоне, а затем возвращает итоговый результат.
Синтаксис
% rebase('parent_template')
Пример
Давайте создадим родительский шаблон base.tpl
с блоком content:
<!DOCTYPE html>
<html>
<head>
<title>{{ title }}</title>
</head>
<body>
% include('header.tpl')
<div>
% block content
% end
</div>
</body>
</html>
Теперь создадим дочерний шаблон page.tpl,
который наследуется от base.tpl
и переопределяет блок content:
% rebase('base.tpl', title='Article')
% block content
<p>
article
</p>
% end
Давайте выведем дочерний шаблон из приложения Bottle:
from bottle import Bottle, template
app = Bottle()
@app.route('/')
def index():
return template('page')
Результат выполнения кода:
<!DOCTYPE html>
<html>
<head>
<title>Article</title>
</head>
<body>
<div>
<p>
article
</p>
</div>
</body>
</html>
Пример
Давайте передадим в дочерний шаблон переменные через родителя.
Изменим файл page.tpl так, чтобы блок выводил значение
переменной text:
% rebase('base.tpl', title='Article')
% block content
<p>
{{ text }}
</p>
% end
Обновим обработчик, передав значение text в шаблон:
from bottle import Bottle, template
app = Bottle()
@app.route('/')
def index():
return template('page', text='abcde')
Результат выполнения кода:
<!DOCTYPE html>
<html>
<head>
<title>Article</title>
</head>
<body>
<div>
<p>
abcde
</p>
</div>
</body>
</html>