Не очевидно из документации на флягу о том, как получить строку запроса. Я новенький, посмотрел документы, не смог найти!
Так
@app.route('/')
@app.route('/data')
def data():
query_string=??????
return render_template("data.html")
Не очевидно из документации на флягу о том, как получить строку запроса. Я новенький, посмотрел документы, не смог найти!
Так
@app.route('/')
@app.route('/data')
def data():
query_string=??????
return render_template("data.html")
Ответы:
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: Прежде чем идти дальше, вы должны спросить себя, зачем вам строка запроса. Мне никогда не приходилось извлекать необработанную строку - у Flask есть механизмы для доступа к ней абстрактно. Вы должны использовать их, если у вас нет веских причин не делать этого.
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/
Мы можем сделать это с помощью 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
Как видите, это всего лишь небольшой пример - вы можете получить несколько значений + отформатировать их и использовать или передать в файл шаблона.
Я пришел сюда в поисках строки запроса, а не о том, как получить значения из строки запроса.
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)
Вывод:
Ссылки:
Попробуйте вот так для строки запроса:
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)
Каждая форма строки запроса извлекается из объекта запроса фляги, как описано в O'Reilly Flask Web Devleopment :
Из O'Reilly Flask Web Development и, как заявил Манан Гухари ранее, сначала вам нужно импортировать запрос:
from flask import request
request
это объект, представленный Flask как переменная контекста с именем (как вы уже догадались) request
. Как следует из его названия, он содержит всю информацию, которую клиент включил в HTTP-запрос. Этот объект имеет много атрибутов и методов, которые вы можете получить и вызвать соответственно.
У вас есть довольно много request
атрибутов, которые содержат строку запроса, из которой можно выбирать. Здесь я перечислю каждый атрибут, который каким-либо образом содержит строку запроса, а также описание из книги О'Рейли этого атрибута.
Во-первых, это args
«словарь со всеми аргументами, передаваемыми в строке запроса URL». Поэтому, если вы хотите, чтобы строка запроса была проанализирована в словаре, вы должны сделать что-то вроде этого:
from flask import request
@app.route('/'):
queryStringDict = request.args
(Как уже отмечали другие, вы также можете использовать, .get('<arg_name>')
чтобы получить определенное значение из словаря)
Затем есть form
атрибут, который не содержит строку запроса, но который включен в часть другого атрибута, который включает в себя строку запроса, которую я сейчас перечислю. Во-первых, form
это «Словарь со всеми полями формы, отправленными с запросом». Я говорю это, чтобы сказать это: есть еще один атрибут словаря, доступный в объекте запроса колбы, который называется values
. values
это «Словарь, который объединяет значения в form
и args
.» Получение этого будет выглядеть примерно так:
from flask import request
@app.route('/'):
formFieldsAndQueryStringDict = request.values
(Опять же, используйте, .get('<arg_name>')
чтобы получить конкретный элемент из словаря)
Другой вариант - query_string
«Часть строки запроса URL-адреса в виде необработанного двоичного значения». Пример этого:
from flask import request
@app.route('/'):
queryStringRaw = request.query_string
Затем в качестве дополнительного бонуса указывается full_path
«Путь и части строки запроса URL». Por ejemplo:
from flask import request
@app.route('/'):
pathWithQueryString = request.full_path
И, наконец, url
«Полный URL, запрошенный клиентом» (который включает строку запроса):
from flask import request
@app.route('/'):
pathWithQueryString = request.url
Удачного взлома :)
Это можно сделать с помощью request.args.get()
. Например, если в строке запроса есть поле date
, доступ к нему можно получить с помощью
date = request.args.get('date')
Не забудьте добавить " request
" в список импорта из колбы, т.е.
from flask import request
request.args.get()
; новые ответы на старые вопросы должны содержать то, что не упоминалось ранее.
Если запрос, если GET и мы передали некоторые параметры запроса, то,
fro`enter code here`m flask import request
@app.route('/')
@app.route('/data')
def data():
if request.method == 'GET':
# Get the parameters by key
arg1 = request.args.get('arg1')
arg2 = request.args.get('arg2')
# Generate the query string
query_string="?arg1={0}&arg2={1}".format(arg1, arg2)
return render_template("data.html", query_string=query_string)