假设我在 template.html 中保存了一个模板布局。该模板包括横幅、侧面导航、内容容器和页脚。我可以使用flask来分解这些页面元素,这样我就可以拥有banner.html、sidenavigation.html等文件并在template.html中渲染这些不同的文件吗?
来自:http://jinja.pocoo.org/docs/templates/#include
模板.html
{% include 'banner.html' %}
{% include 'sidenavigation.html' %}
{% include 'content.html' %}
{% include 'footer.html' %}
默认情况下,Flask 使用 Jinja2 作为其模板引擎。请参阅 Jinja 的模板设计器文档它是如何完成的。
开始之前,您需要将这些组件作为纯html单独写入到其他html文件中。例如,这些文件不应包含任何 jinja 语法。之后,根据文档,您可以通过调用
{% include 'filename.html' %}
代码轻松将它们导入到您的template.html文件中。
仔细考虑是否使用继承(扩展)与组合(包含)。
如果您有多个结构几乎相同的页面,继承可能是最好的选择。但如果你“计划改变”,构图可能会更灵活,而且只是稍微长一点。
对于刚接触面向对象的人来说,过度使用继承是很常见的。请参阅“鲍勃叔叔”的问题,网址为 https://twitter.com/unclebobmartin/status/1308029538463625219?lang=en