python - 如何在 Jinja2 模板中包含 HTML 文件?

标签 python html flask jinja2

我正在为使用 Jinja 模板的服务器使用 Flask 微框架。

我有一个父 template.html 和一些称为 child1.htmlchild2.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 文本,很难跟踪更改并且不犯一些错误,然后很难找到和纠正。

我想只加载 content1.html 而不是将其全部写入 child1.html

我遇到了this question ,但我在实现它时遇到了问题。

我认为 Jinja2 可能有更好的工具。

注意:上面的代码可能无法正常工作,我只是为了说明问题而写的。

最佳答案

使用 jinja2 {% include %}指令。

{% extends 'template.html' %}
{% block content %}
    {% if task == 'content1' %}
        {% include 'content1.html' %}
    {% endif %}
    {% if task == 'content2' %}
        {% include 'content2.html' %}
    {% endif %}
{% endblock %}

这将包括正确内容文件中的内容。

关于python - 如何在 Jinja2 模板中包含 HTML 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22860085/

相关文章:

Python请求访问OAUTH网站内容 - SNL财经

python - GTK3 更改 Switch 小部件的按钮标签名称 'On' 和 'Off'

html - 图像部分作为背景,不缩放

python - 如何为特定用户生成唯一的 url

javascript - Highcharts 不渲染

python - 如何在 Flask 中为每个请求创建 pymongo 连接

python - 遍历 mongoengine Document 中所有字段并检查每个字段是否为特定类型和 is_required 的方法

HTML5 样板文件 : Meta viewport and width=device-width

html - 链接 html css 和图像

python - 抛出异常,包括额外的信息行