Хорошо, первое, что нужно отметить, это то, что функция DataFrame.to_html
генерирует полную таблицу, поэтому нет необходимости помещать внешние теги <table></table>
в ваш шаблон.
Я бы подошел к этому, создав функция, которая возвращает словарь, который будет использоваться в шаблоне:
from flask import Flask, render_template
app = Flask(__name__)
# Just define this once
classes = 'w3-table w3-striped w3-border'
def gen_dict(df, title):
return {'title': title,
'table': df.head().to_html(classes=classes)
}
Затем в вашем маршруте, где у вас есть, например, df
и dfrme
в качестве двух ваших кадров данных, создайте вложенный словарь, и передайте ее функции render_template
с распаковкой dict:
@app.route('/')
def index():
d = {'df1': gen_dict(df, 'First Dataframe'),
'df2': gen_dict(dfrme, 'Second Dataframe')
}
return render_template('index.html', **d)
Затем вы сможете отобразить каждую таблицу отдельно в вашем шаблоне вместе с заголовком:
<h1> {{df1.title}} </h1>
{{df1.table|safe}}
Some where else...
<h1> {{df2.title}} </h1>
{{df2.table|safe}}
Добавление других в дальнейшем, в случае с кадрами данных, возникает случай добавления подобной пары ключ / значение в словарь d
и редактирования кода шаблона.