Flask路由匹配顺序疑问:同路径路由为何仅执行第一个视图函数?
Flask同路径路由匹配问题解答
这是因为Flask的路由匹配是按注册顺序从上到下进行的——当多个视图函数绑定了同一个URL路径时,Flask只会调用第一个被注册的那个,后续的同路径路由会被直接忽略。
你在代码里先定义了@app.route('/')装饰的hello_world函数,之后才定义了同样绑定/的home函数。当你访问根路径/时,Flask会优先匹配到先注册的hello_world,执行它并返回"Hello, world!",后面的home函数完全不会被触发,所以只有注释掉hello_world后,home才会生效。
解决方法很简单:
- 把
home函数的定义(包括@app.route('/')装饰器)移到hello_world的前面,让它先被注册; - 直接删除或注释掉不需要的
hello_world路由; - (不推荐)手动修改Flask的路由映射表,但这种操作没必要,调整定义顺序就足够解决问题。
内容的提问来源于stack exchange,提问作者Sean
相关产品推荐
相关产品推荐

