Вставка таблицы HTML в страницу после преобразования pandas кадра данных - PullRequest
1 голос
/ 23 марта 2020

Я пытаюсь отобразить таблицу HTML на странице в моем приложении flask после преобразования ее из pandas кадра данных. Приложение начинается с получения трех переменных из выпадающих меню на «домашней» странице, а затем создает фрейм данных в зависимости от них (веб-интерфейс удаляет определенные данные из URL-адреса на основе выбора).

Затем я сохраняю df как файл pickle после нажатия кнопки отправки (которая также изменяет страницу) на домашней странице, чтобы его можно было открыть и преобразовать в таблицу HTML на другой странице ...

Ниже приведен мой метод show_results, который вызывает результаты выборки (именно здесь выполняется сбор данных), а затем возвращает шаблон перед попыткой добавления таблицы:

def show_results():
    fetch_results()
    return render_template("get_results.html")
    cache_dir = os.path.join(ROOT_PATH, "cache")
    cache_file = os.path.join(cache_dir, "file.p")
    if request.method == "POST":
        with open(cache_file, "rb") as fid:
            results = pickle.load(fid)
        results_table = results.to_html()
    print(results_table)

Моя общая идея заключалась в том, чтобы вернуть шаблон, а затем добавить в него таблицу. ..

На данный момент get_results. html просто имеет панель навигации и заголовок. Я пытался следовать учебному пособию GeeksForGeeks:

https://www.geeksforgeeks.org/python-pandas-dataframe-to_html-method/

Есть указатели?

1 Ответ

0 голосов
/ 23 марта 2020

Вы можете передать фрейм данных в шаблон html в виде таблицы, такой как:

@app.route('/dropDownVals', methods=['GET' ,'POST'])
def getDropDownVals():
    conn = sqlite3.connect("Casa.db")
    df = pd.read_sql_query("""SELECT * FROM(
    SELECT DISTINCT TEAMA FROM [TABLE]

    UNION 

    SELECT DISTINCT TEAMB FROM [TABLE]
    ) AS X
    WHERE TEAMA NOT LIKE '%#%'
    ORDER BY 1""", conn)
    c = conn.cursor()
    conn.commit()  # commit needed
    c.close()
    return render_template('findCollisions.html', tables=[df.to_html(classes='data', header="true")], titles=df.columns.values)

Затем на странице шаблона вы можете выбрать эти значения, используя Jinja :

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