Flask函数调用同一应用中的其他Flask函数吗?

2 投票
2 回答
2780 浏览
提问于 2025-04-17 19:27

我有几个Flask函数连接在一起,这样我可以在以下位置调用它们:

localhost:5000/FunctionA/inputs
localhost:5000/FunctionB/inputs
localhost:5000/FunctionC/inputs

我想让FunctionC能够调用FunctionA和FunctionB。我该怎么做呢?当我在FunctionC中尝试调用另一个函数(比如FunctionA)时,调用会一直挂着不动(这很正常,因为FunctionC在等自己结束,这样才能腾出地方来处理FunctionA的请求)。

2 个回答

0

我不太确定你具体在问什么,但当用户访问functionC时,你可以很简单地在客户端发起对functionA和functionB的GET请求。AJAX可以让你在后台进行这些操作,而不需要重新加载页面。jQuery让使用AJAX变得很简单。在你的Jinja模板中,只需要这样加载jQuery:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" ></script>

然后,当文档加载完成后(也就是说,用户访问了functionC,页面已经渲染),你只需要这样做:

<script>
$(document).ready(function(){

    $.get("localhost:5000/FunctionA/inputs");
    $.get("localhost:5000/FunctionA/inputs");
});
</script>

上面的代码会向指定的URL发送一个GET请求,并且会忽略它们的任何响应。不过,jQuery的文档展示了如何处理Flask应用返回的数据(比如,获取响应并将其作为URL变量传递给functionC)。

如果你真的想在服务器端将用户重定向到每个视图函数,你只需要使用Flask的redirect函数。这里是文档

希望这对你有帮助。

1

这个问题在这里已经回答过了:在Flask中处理多个请求

不过简单来说,你只需要像这样设置你的运行函数:

app.run(threaded=True)

我假设你正在使用Flask服务器,并且需要在开发过程中运行这个。如果是生产环境,建议查看上面链接中的选项。

撰写回答