将变量通过URL传递给烧瓶应用程序

时间:2014-06-05 05:36:02

标签: python flask

嗯,我的烧瓶应用程序中有这个:

@app.route("/changeip/<ip>")
def change_ip(ip) :
    return ip

现在如果我调用它:

http://127.0.0.1:5000/changeip?ip=1.2.2.2

它吐出“未找到网址”......我在这里做错了什么?

3 个答案:

答案 0 :(得分:6)

第一个路由描述了一个url,其值为url的一部分。第二个url描述了一个没有变量的路由,但在url中有一个查询参数。

如果您使用的是第一条路线,则网址应如http://127.0.0.1/changeip/1.2.2.2

如果您使用的是第二个网址,则路线应该如/changeip,该功能应为def change_ip():,并且应该从request.args['ip']读取该值。

通常路由应该描述应该始终存在的任何参数,并且表单或查询参数应该用于用户提交的数据。

答案 1 :(得分:0)

您应该使用:

app.route('/something/<ip>')
def function(ip):

在使用url_for时,还应该传递ip的值:

url_for('function', ip='your_ip_address')

答案 2 :(得分:-1)

接受的答案是正确的,但我想添加看起来 OP 最初在他的 http 请求中尝试的方法。

另一种传入变量的方法是通过在 url 中分隔变量的问号,并使用请求。

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