【问题标题】:Serving a dynamically generated file in Flask [duplicate]在 Flask 中提供动态生成的文件 [重复]
【发布时间】:2016-09-25 02:58:22
【问题描述】:

我正在运行一个 Flask 应用程序,用户通过在文本框中输入内容来发出 GET 请求。接收 GET 请求的后端代码对查询参数进行一些计算,并返回 2 或 3 个作为计算结果创建的新创建的 json 文件的名称。然后,用户可以查看从 JSON 文件创建的一些图表,具体取决于用户选择的某些过滤。我的问题是我希望将这些 json 文件存储在一个名为 data 的文件夹中(并且它们会随着时间的推移而积累,原因有多种,并且响应速度更快)。我的应用结构大致是:

/data
/static
/templates
/python src files

现在我可以获取 html 代码来获取静态下的文件,但它不适用于数据文件夹下的文件。如何让 Flask 知道允许对数据文件夹的 GET 请求?

【问题讨论】:

    标签: python json flask static


    【解决方案1】:

    您可以使用send_from_directory() 提供来自/data 的文件。

    @app.route('/data/<path:filepath>')
    def data(filepath):
        return send_from_directory('data', filepath)
    

    【讨论】:

    • 谢谢,我会试试这个,文件名是否也可以在另一级目录下?例如 /data/dir1/f1.json 或 /data/dir2/f2.json 等
    • 我修改了答案以允许子目录。另外,之前有一个小错误:目录路径应该是'data'而不是'/data'。
    • 感谢您的尝试,如果有效,我将接受您的回答。我需要几个小时。非常感谢
    【解决方案2】:

    为什么在动作函数中没有缓存逻辑?如果文件已被缓存,则从单个文件加载中提供它。我会想象你也需要访问控制,而这不会通过从 HTTP 服务提供静态文件来实现。

    【讨论】:

    • 我不明白action function这个词,是请求JSON文件的前端代码吗? html 代码不知道它需要解析的 JSON 文件的名称,因为它取决于后端代码完成的计算结果。一旦后端返回带有 JSON 文件名称的响应,html 代码就可以根据用户交互过滤它们。
    猜你喜欢
    • 2016-08-24
    • 2015-05-29
    • 2020-05-12
    • 2019-09-19
    • 2023-03-06
    • 2015-11-03
    相关资源
    最近更新 更多