Как сделать один html файл из нескольких html в al oop? - PullRequest
0 голосов
/ 20 января 2020

Мне нужно сделать один длинный html файл из нескольких простых html файлов.

Я знаю, что приведенный ниже пример может быть реализован проще, но у меня есть веская причина сделать это таким образом (сложный шаблон html с десятками входных параметров).

Пример кода (в в этом случае отображается только первая подстраница, как и ожидалось):

from flask import Flask, render_template

app = Flask(__name__)

items = [['item#1', 123],
         ['item#2', 124],
         ['item#3', 125]]

@app.route("/")
def table():
    for item in items:
        return render_template('table.html', name=item[0], sn=item[1])

if __name__ == '__main__':
    app.run()

таблица. html:

<body>
<h3> {{ name }} </h3>
<table>
    <tr>
        <td>SN</td>
        <td>{{ sn }}</td>
    </tr>
</table>
</body>

Ожидаемый результат:

Item#1
SN  123

Item#2
SN  124

Item#3
SN  125

Do есть идеи как это сделать?

Ответы [ 2 ]

1 голос
/ 20 января 2020

Вы не можете вернуться несколько раз.

def table():
    for item in items:
        # this will return only the first item
        return render_template('table.html', name=item[0], sn=item[1])

Вам нужно изменить свой код flask на что-то вроде этого:

def table():
    return render_template('table.html', items=items)

И затем изменить свой код HTML с помощью a for l oop:

<table>
    <tr>
        {% for item in items %}
        <td>{{ item[0] }}</td>
        <td>SN {{ item[1] }}</td>
        {% endfor %} 
    </tr>
</table>
0 голосов
/ 21 января 2020

Наконец я нашел решение:

items = [{'name': 'item#1', 'sn': 123},
         {'name': 'item#2', 'sn': 124},
         {'name': 'item#3', 'sn': 125}]

@app.route("/")
def table():
    for item in items:
        return render_template('table.html', items=items)

и

{% for item in items %}
<h3> {{ item.name }} </h3>
<table>
    <tr>
        <td>SN</td>
        <td>{{ item.sn }}</td>
    </tr>
</table>
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...