首页 > 解决方案 > 使用 Fetch API 发送请求时,Flask render_template() 不起作用

问题描述

我有一个处理长时间运行计算的后台任务。我使用 Redis 和 RQ 来更新进度条。当后台任务完成时,我触发我的应用程序(来自 Javascript)通过使用 Fetch API 向应用程序发送请求来呈现带有我的后台任务结果的页面。

我的路线被执行(我可以设置断点并单步执行我的代码,验证一切正常)。但是,当我在路线末尾返回 render_template() 时,什么也没有发生。

如果我在呈现模板之前打印出请求,然后单击 URL,它会正确呈现。我怀疑 Fetch 生成的请求有问题。下面是我使用 fetch() 的 Javascript 代码。请注意,我使用了与通过单击 URL 产生的请求相同的“内容类型”。

fetch(`/scenario/` + job_id + `/display_result`, {
          method: "GET",
          headers: {
            "content-type": "text/html, application/xhtml+xml;q=0.9,*/*;q=0.8",
          },
        })

标签: javascriptpythonflaskfetch-api

解决方案


我错过了使用请求响应并将其显示在我的页面中,这是最终代码:

fetch(`/scenario/` + job_id + `/display_result`, {
          method: "GET",
}).then((response) => {
    return response.text();
}).then((html) => {
    document.body.innerHTML = html
});

推荐阅读