Jinja2多部分模板问题
在创建模板的时候,我通常会有三个独立的部分(头部、主体、底部),然后把它们组合起来,传递一个字符串给网络服务器(在这个例子中是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)
不过,这样做意味着每个部分都是在自己的环境中创建的——这样会有问题吗?这种做法还有其他缺点吗?
我选择了这种三部分的方式,而不是使用子模板的方法,因为我觉得这样可能更灵活(而且更容易理解),但我可能错了。有没有人想说服我,使用头部、主体和底部的方式可能会更好呢?
任何建议都非常感谢。
阿兰
1 个回答
11
如果你不想使用模板继承,你有没有考虑过用 include
呢?
{% include 'header.html' %}
Body
{% include 'footer.html' %}