Python Flask Джинджа расширяется html внутри другого расширенного html - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть вопрос, возможно ли это. У меня есть макет. html страница, которая подключена к дому. html. Внутри дома. html У меня есть элемент таблицы. Я тоже пытаюсь получить содержимое таблицы из таблицы. html.

Вы можете увидеть в коде, что я пробовал. Любые знания, если это вообще возможно?

макет. html

<!DOCTYPE html>
<html lang="en">

<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>

Home. 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" align="center">
                <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 ]

0 голосов
/ 06 февраля 2020

Jinja 2.11 теперь поддерживает вложенные шаблоны.

Если вы не используете 2.11 и работаете над меньшим приложением, я бы предложил обновить Flask, запустив pip install Flask --upgrade.

Затем попробуйте сделать своего table.html ребенком Home.html

Однако, если вы хотите использовать более старую версию. Вам нужно будет найти обходной путь, как предлагали другие.

0 голосов
/ 05 февраля 2020

Я думаю, что 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 tag:

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

Протестировано с Jinja2==2.10.3

...