Ala*_*eid 4 python templates jinja2
在创建模板时,我通常有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
Run Code Online (Sandbox Code Playgroud)
但这包含重复的代码,所以我的下一个方法是......
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)
Run Code Online (Sandbox Code Playgroud)
但是,这意味着每个部分都是在自己的环境中创建的 - 这可能是个问题吗?这种方法还有其他缺点吗?
我选择了三部分方法而不是子模板方法,因为我认为它可能更灵活(也更容易理解),但我可能错了.有人想说服我使用标题,正文和页脚块可能会更好吗?
任何意见,将不胜感激.艾伦
Rya*_*rom 11
如果你不想做模板继承,你考虑过include吗?
{% include 'header.html' %}
Body
{% include 'footer.html' %}
Run Code Online (Sandbox Code Playgroud)