0

我有一个名为 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

这是我想要链接到 csv 文件的 html 页面的 index.html 文件。

{% extends "base.html" %}

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

这是我想要查看 CSV 数据的 dataset.html 文件。

{% extends "base.html" %}

{% block content %}

{% endblock %}

我收到此错误: AttributeError: 'function' object has no attribute 'html' 错误出现在我返回 dataset.html 文件的 routes.py 文件中。

4

2 回答 2

0

我通过使用 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())
于 2021-01-28T13:32:44.597 回答
0

原因是您使用函数名称隐藏了变量的任何内容:

    def dataset():
        return dataset.html

dataset是函数。如果它之前是别的东西,命名你的函数dataset会替换那个变量。

于 2021-01-28T21:50:51.170 回答