首页 文章

你如何在Flask上获得查询字符串?

提问于
浏览
278

关于如何获取查询字符串的烧瓶文档并不明显 . 我是新人,看着文档,找不到!

所以

@app.route('/')
@app.route('/data')
def data():
    query_string=??????
    return render_template("data.html")

4 回答

  • 13

    Werkzeug / Flask已经为您解析了一切 . 不需要再次使用urlparse做同样的工作:

    from flask import request
    
    @app.route('/')
    @app.route('/data')
    def data():
        query_string = request.query_string  ## There is it
        return render_template("data.html")
    

    Werkzeug中的请求和响应对象的完整文档:http://werkzeug.pocoo.org/docs/wrappers/

  • 12
    from flask import request
    
    @app.route('/data')
    def data():
        # here we want to get the value of user (i.e. ?user=some-value)
        user = request.args.get('user')
    
  • 174

    完整URL可用作 request.url ,查询字符串可用作 request.query_string .

    这是一个例子:

    from flask import request
    
    @app.route('/adhoc_test/')
    def adhoc_test():
    
        return request.query_string
    

    要访问查询字符串中传递的单个已知参数,可以使用 request.args.get('param') . 据我所知,这是"right"这样做的方法 .

    ETA:在你走得更远之前,你应该问问自己为什么要查询字符串 . 我从来没有必须拉入原始字符串 - Flask具有以抽象方式访问它的机制 . 你应该使用那些,除非你有令人信服的理由不这样做 .

  • 534

    我们可以使用request.query_string来做到这一点 .

    例:

    让我们考虑一下view.py

    from my_script import get_url_params
    
    @app.route('/web_url/', methods=('get', 'post'))
    def get_url_params_index():
        return Response(get_url_params())
    

    您还可以使用Flask Blueprints使其更加模块化 - http://flask.pocoo.org/docs/0.10/blueprints/

    让我们考虑将名字作为查询字符串/ web_url /?first_name = john的一部分传递

    ## here is my_script.py
    
    ## import required flask packages
    from flask import request
    def get_url_params():
        ## you might further need to format the URL params through escape.    
        firstName = request.args.get('first_name') 
        return firstName
    

    如您所见,这只是一个小例子 - 您可以获取多个值,然后使用它或将其传递到模板文件中 .

相关问题