解析完所有块后,在扩展模板中调用方法

时间:2014-05-24 22:47:01

标签: python flask jinja2

我有两种方法,set_page_titleget_page_titleset_page_title调用child.htmlbase.html扩展get_page_title,然后调用set_page_title

g向全局get_page_title对象添加一个属性,get_page_title然后从中读取该属性。

我希望get_page_title最后被调用,因为它在装饰视图中,但它实际上是先调用的。无论如何,我可以延迟{{1}}的执行,直到所有子模板都被完全解析为止?

1 个答案:

答案 0 :(得分:0)

听起来你正试图在Jinja的block中复制已经可以使用的功能:

{# base.html #}
<!DOCTYPE html>
<head>
<title>{% block title %}Default Title{% endblock %} - Site Name</title>
</head>
<body>
<main>
<h1>{{ self.title() }}</h1>
</main>
</body>
</html>

然后,在子模板中,您只需要覆盖块:

{# child.html #}
{% block title %}Child Title{% endblock %}