【发布时间】:2014-06-05 05:36:02
【问题描述】:
我的烧瓶应用程序中有这个:
@app.route("/changeip/<ip>")
def change_ip(ip) :
return ip
现在如果我像这样调用它:
http://127.0.0.1:5000/changeip?ip=1.2.2.2
它吐出“找不到 URL”...我在这里做错了什么?
【问题讨论】:
我的烧瓶应用程序中有这个:
@app.route("/changeip/<ip>")
def change_ip(ip) :
return ip
现在如果我像这样调用它:
http://127.0.0.1:5000/changeip?ip=1.2.2.2
它吐出“找不到 URL”...我在这里做错了什么?
【问题讨论】:
第一个路由描述了一个带有值的 url 作为 url 的一部分。第二个 url 描述了一个没有变量的路由,但在 url 中有一个查询参数。
如果您使用第一个路由,则 url 应类似于 http://127.0.0.1/changeip/1.2.2.2。
如果你使用第二个url,路由应该是/changeip,函数应该是def change_ip():,值应该从request.args['ip']读取。
通常,路由应描述应始终存在的任何参数,并且应将表单或查询参数用于用户提交的数据。
【讨论】:
你应该使用:
app.route('/something/<ip>')
def function(ip):
当你使用 url_for 时,你也应该传递 ip 的值:
url_for('function', ip='your_ip_address')
【讨论】:
接受的答案是正确的,但我想添加看起来 OP 最初在他的 http 请求中尝试的方法。
另一种传入变量的方法是通过url中分隔变量的问号,并使用requests。
import requests
然后在方法中,
@app.route("/changeip")
def change_ip():
return requests.args.get('ip', '')
对于 url,您使用问号分隔符传递变量,这是您最初尝试的方式。
http://127.0.0.1:5000/changeip?ip=1.2.2.2
【讨论】: