簡體   English   中英

使用 Flask 將 CSV 文件顯示為 HTML 頁面

[英]Displaying CSV file as HTML page using Flask

我有一個名為 random.csv 的 CSV 文件,如果用戶已登錄,我想在 html 頁面上呈現它。我已經嘗試為此使用 tablib。

__init__.py

    from flask import Flask
    import tablib

    app = Flask(__name__)
    dataset = tablib.Dataset()
    with open(os.path.join(os.path.dirname(__file__), 'random.csv')) as f:
    dataset.csv = f.read()

routes.py

    @app.route('/dataset', methods=['GET', 'POST'])
    @login_required
    def dataset():
        return dataset.html

這是 index.html 文件,我想從中鏈接到 csv 文件的 html 頁面。

{% extends "base.html" %}

{% block content %}
    <p><a href="{{ url_for('dataset') }}">Click to see CSV</a> </p>
{% endblock %}

這是 dataset.html 文件,我想在其中查看 CSV 數據。

{% extends "base.html" %}

{% block content %}

{% endblock %}

我收到此錯誤: AttributeError: 'function' object has no attribute 'html' 該錯誤在我返回 dataset.html 文件的 routes.py 文件中的行上。

我通過使用 pandas 而不是 tablib 解決了這個問題。 在我的 routes.py 文件中這樣做:

import pandas as pd

@app.route('/dataset', methods=['GET', 'POST'])
@login_required
def dataset():
    table = pd.read_csv('filepath', encoding= 'unicode_escape')
    return render_template("dataset.html", data=table.to_html())

原因是您使用 function 名稱隱藏了變量:

    def dataset():
        return dataset.html

dataset是 function。如果之前是別的東西,命名你的 function dataset替換了那個變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM