在Jinja2模板中包含html文件
我为我的服务器使用Jinja模板使用Flask microframework。 我有父母template.html和一些孩子child1.html,child2.html。 其中一些孩子是相当大的HTML文件,我想以某种方式分裂他们为我的工作更好的清晰。
main.py:
from flask import Flask, request, render_template app = Flask(__name__) @app.route('/') @app.route('/<task>') def home(task=''): return render_template('child1.html', task=task) app.run()
简化的template.html:
<!DOCTYPE html> <html> <head> </head> <body> <div class="container"> {% block content %} {% endblock %} </div> </body> </html>
而魔法是在child1.html中:
{% extends 'template.html' %} {% block content %} {% if task == 'content1' %} <!-- include content1.html --> {% endif %} {% if task == 'content2' %} <!-- include content2.html --> {% endif %} {% endblock %}
而不是评论
<!-- include content1.html -->
我有很多的HTML文本。 要记住变化是很困难的,不要犯一些很难find和纠正的错误。 所以我想只加载content1.html,而不是全部写在child1.html中。 我遇到过这个问题在HTML文件中包含另一个HTML文件 ,但是我在实现它时遇到了问题。 我认为Jinja2可能有更好的工具。
注意。 上面的代码可能工作不正常,我只是写它来解决这个问题。
使用jinja2 {% include %}
指令。
{% extends 'template.html' %} {% block content %} {% if task == 'content1' %} {% include 'content1.html' %} {% endif %} {% if task == 'content2' %} {% include 'content2.html' %} {% endif %} {% endblock %}
这将包括来自正确的内容文件的内容。
您可以使用include语句。