Flask路由规则报错:ValueError: malformed url rule问题求助
Flask路由错误修正方案
问题原因
你遇到的ValueError: malformed url rule: '/<King Solomon>'错误,是因为Flask路由规则写法不符合规范:
- 路由里的
<King Solomon>试图定义变量,但变量名不能包含空格,违反了Flask路由变量的命名规则(变量名仅支持字母、数字、下划线)。 - 你的需求是匹配固定路径
/King Solomon,却错误使用了路由变量的<>语法,导致框架识别为无效规则。 - 函数
user定义了name参数,但当前路由没有传递该参数的逻辑,即使路由合法也会触发参数不匹配的错误。
修正方案
根据你的需求,提供两种实现方式:
方式一:固定匹配/King Solomon路径
直接将路由写为固定路径,函数无需参数,直接返回指定内容:
from flask import Flask app = Flask(__name__) @app.route('/King Solomon') def user(): return "Hello King Solomon!" if __name__ == "__main__": app.run()
启动服务后,访问http://localhost:5000/King Solomon即可返回Hello King Solomon!。
方式二:支持动态用户名(扩展方案)
如果想让路由支持任意用户名(比如/Alice返回Hello Alice!,/Bob返回Hello Bob!),需使用合法的路由变量(变量名无空格),并保证函数参数与变量名一致:
from flask import Flask app = Flask(__name__) @app.route('/<name>') def user(name): return f"Hello {name}!" if __name__ == "__main__": app.run()
此时访问http://localhost:5000/King Solomon,框架会自动将King Solomon作为name参数传递给函数,返回Hello King Solomon!。如果需要支持包含斜杠的复杂用户名,可使用path转换器:
@app.route('/<path:name>') def user(name): return f"Hello {name}!"
内容的提问来源于stack exchange,提问作者D. Solomon K. Youhn
相关产品推荐
相关产品推荐

