2 votes

Est-il possible d'envoyer deux dataframes à mon html (flask) ?

Ainsi, ma page html reçoit un dataframe pandas.

return render_template('example.html', tables=[data_frame.to_html(classes='data')], titles=dataframe.columns.values)

et ma page html l'affiche :

{% for table in tables %}
            {{titles[loop.index]}}
            {{ table|safe }}
{% endfor %}

Ce que je veux faire, c'est afficher deux dataframes distincts dans ma page html. Comment puis-je le faire ?

Par exemple : Si j'ai des cadres de données df1 et df2,

dans la page html, je veux les afficher après du texte.

show df1

<h2> some text </h2>

show df2

2voto

arez Points 51

Depuis render_template accepte les dictionnaires, vous pouvez passer un objet Dict nommé context ou autre à la fonction "render_template" avec les clés "table" et "title". Et ensuite, dans votre Jinja, vous pouvez accéder à ces clés par context.table y context.title .

Exemple :

def my_function(request):
    ...
    get your dataframe
    ...
    context = {"tables":[data_frame.to_html(classes='data')],
               "titles" : dataframe.columns.values,
              }

    return render_template('template.html', context=context)

0voto

Deepak velu Points 61

Cela peut être fait facilement dans modèle de rendu

Votre code peut être modifié comme suit :

return render_template('example.html',tables= [data_frame1.to_html(classes='data'),data_frame2.to_html(classes='data')], 
titles=['na','FirstTable','SecondTable'])

Comme vous pouvez le voir, vous pouvez ajouter plus d'un cadre de données dans les tableaux.

Maintenant, en Jinja, vous pouvez simplement boucler à travers chaque table (dataframe) et afficher

{% for table in tables %}
{{ titles[loop.index] }}
{{ table|safe }}
{% endfor %}

Consultez l'image ci-dessous pour votre référence :

Sample image for your reference

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X