python - 是否可以在服务器端的 Flask 中动态更新呈现的模板?

标签 python json flask

我目前有一个 Flask 网络服务器,它使用内置的请求对象从 JSON API 中提取数据。

例如:

def get_data():
    response = requests.get("http://myhost/jsonapi")
    ...
    return response

@main.route("/", methods=["GET"])
def index():
    return render_template("index.html", response=response)

这里的问题是 GET 方法自然只运行一次,即第一次调用 get_data 时。为了刷新数据,我必须停止并重新启动 Flask wsgi 服务器。我尝试将代码的各个部分包装在 while True/sleep 循环中,但这会阻止 werkzeug 加载页面。

无需重新加载页面或重新启动服务器即可动态获取所需数据的最 Pythonic 方式是什么?

最佳答案

您正在讨论的可能是两个不同的问题。

  1. 假设问题是您只调用动态数据源 get_data() 一次并将其(静态)值保存在全局响应。这个一次性调用没有显示,但假设它在你的代码中的某个地方。然后,如果您愿意刷新页面 (/) 以获取更新,那么您可以:

    @main.route("/", methods=['GET'])
    def index():
        return render_template("index.html", response=get_data())
    

    这会在每次页面加载时获取新数据。

  2. 然后在问题的最后,您询问如何“获取我想要的数据而无需重新加载页面或重新启动服务器”。那是一个完全不同的问题。您必须在代码中使用 AJAX 或 WebSocket 请求。您可以通过谷歌搜索“Flask AJAX”找到很多关于如何执行此操作的教程(例如本教程)。但这将需要 JavaScript AJAX 调用。我建议通过搜索“Flask AJAX jQuery”找到如何完成此操作的示例,因为 jQuery 将抽象并简化您需要在客户端执行的操作。或者,如果您希望使用 WebSockets 实现网页之间的低延迟连接,那也是可能的;搜索示例(例如 like this one )。

关于python - 是否可以在服务器端的 Flask 中动态更新呈现的模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26536187/

相关文章:

python - 在 flask 上是否有效?

database - 我在 SQLAlchemy 中的关系有什么问题?

python - 如何使用正则表达式删除带空格的字符串(由特殊字符组成)?

python - 将字符串列表传递给结构任务

python - 错误 : [Errno 32] Broken pipe when paypal calls back to python django app

javascript - 将mysql查询返回的数据转换为json(基于树)

javascript - JSON - 根据用户输入更改键值对

json - 解码到相同的结构但不同的 json 名称

python - AttributeError : 'str' object has no attribute 'view' in Seaborn , 散点图

python - 在 WTForms 字段上设置数据属性