在此代码中,如果导航到“/King Solomon”,则应调用 hello 函数,并将名称设置为“King Solomon”,并且应返回字符串“Hello, King Solomon!”。但它宁愿返回这个错误
raise ValueError(f"malformed url rule: {rule!r}")
ValueError: malformed url rule: '/<King Solomon>'
我试过这个
from flask import Flask
app = Flask(__name__)
@app.route('/<King Solomon>')
def user(name):
return f"Hello {name}!"
if __name__ == "__main__":
app.run()
我期待并输出说“你好所罗门王”
我认为其意图是“所罗门王”事先并不知道,而是由用户在应用程序运行后作为 URL 的一部分提供。
因此,您的代码不应包含此字符串,但应提供
name
作为路径中的变量,用户可以在将 URL 键入浏览器或其他请求实用程序时填写该变量:
from flask import Flask
app = Flask(__name__)
@app.route("/<string:name>")
def user(name):
return f"Hello {name}!"
if __name__ == "__main__":
app.run()
用途:
$ curl http://localhost:5000/King%20Solomon
Hello King Solomon!
$ curl http://localhost:5000/whatever
Hello whatever!
如果需要,您还可以提供默认值:
# ...
@app.route("/<string:name>")
@app.route("/", defaults={"name": "there"})
def user(name):
...
# ...
用途:
$ curl http://localhost:5000/
Hello there!