代码之家  ›  专栏  ›  技术社区  ›  Czarek

Flask:如何接收传递给变量部分的所有字符?

  •  0
  • Czarek  · 技术社区  · 6 年前

    我有一个简单的web服务:

    from flask import Flask, escape
    
    app = Flask(__name__)
    
    @app.route('/test/<path:variable>')
        def print_variable(variable):
            return 'Variable: %s' % escape(variable)
    

    当我在浏览器中运行时:

    http://localhost:5000/test/https://www.whydoyoucut.com/stat.phtml?u=value1&g=value2
    

    我收到:

    Variable: https://www.whydoyoucut.com/stat.phtml
    

    我的目标是获得:

    Variable: https://www.whydoyoucut.com/stat.phtml?u=value1&g=value2
    

    为了达到这个目标,我应该对代码进行哪些更改?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Upendra Sahu    6 年前

    据我所知,你可以得到字符串,但你错过了参数。您可以使用请求。阿格斯去拿。以下代码片段应该适合您:

    from flask import Flask, escape, request
    
    app = Flask(__name__)
    
    
    @app.route('/test/<path:variable>')
    def print_variable(variable):
        print(variable)
        print(request.args.get('u'))
        print(request.args.get('g'))
        return 'Variable: %s' % escape(variable)
    
        2
  •  1
  •   Rafael Marques    6 年前

    正如Upendra所说,您可以使用request。args从url获取查询字符串。

    要返回传递给api的url,可以执行以下操作:

    from flask import Flask, escape, request
    
    app = Flask(__name__)
    
    @app.route('/test/<path:variable>')
    def print_variable(variable):
        return_value = escape(variable)
    
        if request.args:
            return_value += '?'
            return_value += '&'.join([f'{k}={v}' for k, v in request.args.items()])
    
        return 'Variable: %s' % return_value
    

    这里我们只是附加?如果给的话,还有ARG。 你只需要格式化 ImmutableMultiDict 收到 flask.Request .

    结果是:

    request: http://127.0.0.1:10000/test/https://www.whydoyoucut.com/stat.phtml?u=value1&g=value2
    response: Variable: https://www.whydoyoucut.com/stat.phtml?u=value1&g=value2
    
    request: http://127.0.0.1:10000/test/https://www.whydoyoucut.com/stat.phtml
    response: Variable: https://www.whydoyoucut.com/stat.phtml