为什么Flask配置带<name>路径参数的路由时,user()方法需要传参才能正常运行
报错核心原因
你使用了Flask的动态路由语法@app.route("/<name>"),规则中的<name>是动态参数占位符:当用户访问/xxx路径时,Flask会自动把xxx作为参数传入绑定的user()视图函数。
而你的user()函数没有定义接收参数的形参,调用时会触发TypeError类型错误,未捕获的异常会直接导致Flask返回500 Internal Server Error。
适配需求的解决方法
你需要的「/后输入任意内容都返回hallo moto」的效果可以用两种方式实现:
- 方案1:给视图函数补充对应名称的形参(即使不需要使用该参数也可以正常运行)
修改后的代码示例:
from flask import Flask app = Flask(__name__) @app.route("/<name>") def user(name): return "hallo moto" app.run()
- 方案2:如果需要匹配包含多层斜杠的路径(比如
/a/b/c也能触发),可以使用path类型的动态参数:
from flask import Flask app = Flask(__name__) @app.route("/<path:unused_name>") def user(unused_name): return "hallo moto" app.run()
内容的提问来源于stack exchange,提问作者Aadarsh Kumar Gupta
相关产品推荐
相关产品推荐

