我收到错误消息“ raise ValueError(f"格式错误的 url 规则: {rule!r}") ValueError: 格式错误的 url 规则: '/<King Solomon>'"

问题描述 投票:0回答:1

在此代码中,如果导航到“/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()
    

我期待并输出说“你好所罗门王”

python flask error-code
1个回答
0
投票

我认为其意图是“所罗门王”事先并不知道,而是由用户在应用程序运行后作为 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!
© www.soinside.com 2019 - 2024. All rights reserved.