我正在为使用Jinja模板的服务器使用Flask微框架。
我有一个家长template.html和孩子们的一些所谓的模板child1.html和child2.html,这些孩子有的模板是相当大的HTML文件,我想以某种分裂他们超过我的工作更好的洞察力。
template.html
child1.html
child2.html
我的main.py脚本内容:
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()
The magic is in 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文本,很难跟踪更改并且不犯一些错误,因此很难查找和纠正。
我只想加载content1.html而不是全部写入child1.html。
content1.html
我遇到了这个问题,但是在实施时遇到了问题。
我认为Jinja2可能有一个更好的工具。
注意:上面的代码可能无法正常工作,我只是编写它来解决问题。
使用jinja2 {% include %}指令。
{% include %}
{% extends 'template.html' %} {% block content %} {% if task == 'content1' %} {% include 'content1.html' %} {% endif %} {% if task == 'content2' %} {% include 'content2.html' %} {% endif %} {% endblock %}
这将包括来自正确内容文件的内容。