4

创建模板时,我通常有 3 个单独的部分(页眉、正文、页脚),我将它们组合起来以将单个字符串传递给 Web 服务器(在本例中为 CherryPy)。

我的第一种方法如下...

from jinja2 import Environment, FileSystemLoader
env  = Environment(loader=FileSystemLoader(''))

tmpl = env.get_template('Body.html')
page_body = tmpl.render()

tmpl = env.get_template('Header.html')
page_header = tmpl.render()

tmpl = env.get_template('Footer.html')
page_footer = tmpl.render()

page_code = page_header + page_body + page_footer

但这包含重复的代码,所以我的下一个方法是......

def render_template(html_file):
    from jinja2 import Environment, FileSystemLoader
    env  = Environment(loader=FileSystemLoader(''))
    tmpl = env.get_template(html_file)
    return tmpl.render()

page_header = render_template('Header.html')
page_body   = render_template('Body.html')
page_footer = render_template('Footer.html)

然而,这意味着每个部分都是在自己的环境中创建的——这会是个问题吗?这种方法还有其他缺点吗?

我选择了 3 部分方法而不是子模板方法,因为我认为它可能更灵活(并且更容易遵循),但我可能错了。有人愿意说服我使用页眉、正文和页脚块可能会更好吗?

任何意见,将不胜感激。艾伦

4

1 回答 1

11

如果你不想做模板继承,你考虑过include吗?

{% include 'header.html' %}
    Body
{% include 'footer.html' %}
于 2010-06-16T11:33:56.813 回答