【问题标题】:Passing variables through URL to a flask app通过 URL 将变量传递给烧瓶应用程序
【发布时间】: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”...我在这里做错了什么?

【问题讨论】:

    标签: python flask


    【解决方案1】:

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

    如果您使用第一个路由,则 url 应类似于 http://127.0.0.1/changeip/1.2.2.2

    如果你使用第二个url,路由应该是/changeip,函数应该是def change_ip():,值应该从request.args['ip']读取。

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

    【讨论】:

      【解决方案2】:

      你应该使用:

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

      当你使用 url_for 时,你也应该传递 ip 的值:

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

      【讨论】:

        【解决方案3】:

        接受的答案是正确的,但我想添加看起来 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
        

        【讨论】:

        • 我认为你应该从 Flask 导入请求,而不是模块请求
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-11-08
        • 2020-12-21
        • 2017-11-19
        • 2018-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多