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

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

Итак,

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

Ответ 1

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

Ответ 2

Полный 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: Прежде чем идти дальше, вы должны спросить себя, почему вы хотите строку запроса. Мне никогда не приходилось тянуть сырую строку - в Flask есть механизмы для доступа к ней абстрактным способом. Вы должны использовать их, если у вас нет веских оснований.

Ответ 3

Мы можем сделать это, используя 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 = Джон

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

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

Ответ 4

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/

Ответ 5

Попробуйте вот так для строки запроса:

from flask import Flask, request

app = Flask(__name__)

@app.route('/parameters', methods=['GET'])
def query_strings():

    args1 = request.args['args1']
    args2 = request.args['args2']
    args3 = request.args['args3']

    return '''<h1>The Query String are...{}:{}:{}</h1>''' .format(args1,args2,args3)


if __name__ == '__main__':

    app.run(debug=True)

Выход: enter image description here

Ответ 6

Я пришел сюда в поисках строки запроса, а не о том, как получить значения из строки запроса.

request.query_string возвращает параметры URL в виде необработанной байтовой строки (ссылка 1).

Пример использования request.query_string:

from flask import Flask, request

app = Flask(__name__)

@app.route('/data', methods=['GET'])
def get_query_string():
    return request.query_string

if __name__ == '__main__':
    app.run(debug=True)

Выход:

query parameters in Flask route

Рекомендации:

  1. Официальная документация API по query_string

Ответ 7

Это можно сделать с помощью request.args.get(). Например, если в строке запроса date поля, доступ к ней можно получить с помощью

date = request.args.get('date')

Не забудьте добавить " request " в список импорта из колбы, т.е.

from flask import request

Ответ 8

@app.route('/data')
def data():
    query_string= request.args.get('data')
    return render_template("data.html",query_string=query_string)