为了账号安全,请及时绑定邮箱和手机立即绑定

Python Flask Jinja 在另一个扩展的 html 中扩展 html

Python Flask Jinja 在另一个扩展的 html 中扩展 html

杨魅力 2022-07-19 15:25:38
我有一个问题,如果这可能。我有一个连接到 home.html 的 layout.html 页面。在 home.html 里面我有一个表格元素。我也在尝试从 table.html 获取内容。您可以在代码中看到我尝试过的内容。任何知识,如果这甚至可能?布局.html<!DOCTYPE html><html><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <meta http-equiv="X-UA-Compatible" content="ie=edge">    <title>Armering bestilling</title></head><body>    {% block content %}    {% endblock %}</body></html>主页.html{% extends "layout.html" %}{% block content %}<div id="accordion">    <div class="card bg-dark">        <div class="card-header text-white bg-dark mb-3" id="headingOne">            <h5 class="mb-0">                <button class="btn text-light" data-toggle="collapse" data-target="#collapseOne" aria-expanded="true"                    aria-controls="collapseOne">                    Armering bunnplate                </button>            </h5>        </div>        <div id="collapseOne" class="collapse" aria-labelledby="headingOne" data-parent="#accordion">             <table class="table table-striped table-dark">                <thead>                  {% extends "table.html" %}                  {% block content %}                  {% endblock content %}              </thead>        </div>    </div></div>{% endblock content %}表.html{% block content %}<tr>    <td><input type="checkbox" name="name1" />&nbsp;</td>    <td>FB1</td>    <td>001</td>    <td>00</td>    <td>STK</td>    <td>B500NC</td>    <td>25.0</td>    <td>20.0</td>    <td>None</td>    <td>None</td>    <td>6575.0</td>    <td></td>    <td></td>    <td></td>    <td></td>    <td></td>    <td></td>    <td></td>    <td>6.58</td></tr> {% endblock content %}
查看完整描述

2 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

我认为 Jinja2 只支持一级继承。您可能能够使用包含来实现您想要做的事情。


layout.html:


<html>

<body>

  {% block content %}

  {% endblock %}

</body>

child.html:


{% extends "layout.html" %}


{% block content %}

  {% with objects = some_objects %}

    {% include "table.html" %}

  {% endwith %}

{% endblock %}

table.html:


{% for object in objects %}

  {{ object.name }}

  {{ object.desc }}

{% endfor %}

当您使用以下代码呈现模板时,这将起作用:


d = [ {'name':'a', 'desc':'b'},

      {'name':'c', 'desc':'d'}

    ]

return render_template('child.html', some_objects = d)

此外,如果您想向下传递多个变量,则此语法对with标签有效:


{% with objects = some_objects, title = title %}

经测试Jinja2==2.10.3


查看完整回答
反对 回复 2022-07-19
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

Jinja 2.11 现在支持嵌套模板。

如果您不在 2.11 上并且正在开发一个较小的应用程序,我建议您通过运行pip install Flask --upgrade.

然后试着让你table.html的孩子Home.html

但是,如果您热衷于使用旧版本。您需要像其他人建议的那样想出一个解决方法。


查看完整回答
反对 回复 2022-07-19
  • 2 回答
  • 0 关注
  • 100 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号