2
Я использую CherryPy с шаблонами Мако. Я пытаюсь выяснить, как передать aruguments от первоначального вызова (в данном примере title
):Передать переменную из шаблона Мако в унаследованный шаблон
class Landing(object):
def index(self):
tmpl = lookup.get_template("index.html")
return tmpl.render(title="Hello World")
index.exposed = True
к index.html
:
<%inherit file="base.html"/>
<%def name="title()">$(title)</%def>
this is the body content
, а затем к унаследованной base.html
шаблона:
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title>$(self.title())</title>
</head>
<body>
<h1>$(parent.title())</h1>
${self.body()}
</body>
</html>
Я пробовал self.title
и parent.title
и не работал. Как передать переменную из начального вызова?
$ {TITLE} должны работать. Поэтому используйте фигурные скобки вместо обычных. И это не вызов функции, поэтому удалите() в конце. –
Возможно, вы также захотите изменить имя = "title()" на name = "$ {title}" –
@basvandenberg спасибо, вот и все! Если вы добавите его в качестве ответа, я соглашусь с ним. Я попытался заменить title() на $ {title}, но получил ошибку: 'mako.exceptions.CompileException: Attibute 'name' в теге 'def' не разрешает встроенные выражения в файле 'template/index.html' в строке: 2 char: 1 – xylar