Flask: обрабатывать фрейм данных render_template как html - PullRequest
1 голос
/ 13 марта 2020

Я использую следующий код для рендеринга значений фрейма данных как HTML, который направляется на HTML и работает нормально.

@app.route('/index/')
def index():
    return render_template('index.html',tables=[df.head().to_html(classes='table table-striped') ] ,titles=df.columns.values )

У меня есть еще один фрейм данных, который должен быть используется в том же «index. html». Я попытался добавить то же самое в приведенном выше коде, как показано ниже:

 @app.route('/index/')
 def index():
     return render_template('index.html',tables=[df.head().to_html(classes='table table-striped'),**dfrme.head().to_html(classes='table1')** ] ,titles=df.columns.values )

Он выводит таблицу один над другим. так как я хочу, чтобы другое значение фрейма данных вызывалось в другой области индекса. html нужна ваша помощь для выполнения того же.

код, в котором оно отображается:

<table class="w3-table w3-striped w3-border">
  <tr>
    {% for table in tables %}
      {{ table|safe }}
    {% endfor %}
  </tr>
</table>

1 Ответ

2 голосов
/ 13 марта 2020

Хорошо, первое, что нужно отметить, это то, что функция 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 и редактирования кода шаблона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...