Как вы получаете строку запроса на Flask?


не очевидно из документа колбы о том, как получить строку запроса. Я новичок, посмотрел на документы, не смог найти!

Так

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

4 ответа:

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')

полный 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'). Это "правильный" способ сделать это, насколько я знаю.

ETA: прежде чем идти дальше, вы должны спросить себя, почему вы хотите строку запроса. Мне никогда не приходилось вытаскивать сырую строку-у колбы есть механизмы для доступа к ней в абстрактном виде путь. Вы должны использовать их, если у вас нет веской причины не делать этого.

мы можем сделать это с помощью запроса.строка запроса.

пример:

давайте рассмотрим 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())

вы также сделать его более модульным с помощью колбы чертежи -http://flask.pocoo.org/docs/0.10/blueprints/

давайте рассмотрим имя передается как часть строки запроса / web_url/?имя=Джон

## 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

Как вы видите, это всего лишь небольшой пример - вы можете получить несколько значений + формируют те и используйте его или передайте в файл шаблона.

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/