Не ясно из документа флеш о том, как получить строку запроса. Я новичок, посмотрел на документы, не смог найти!
Итак,
@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 есть механизмы для доступа к ней абстрактным способом. Вы должны использовать их, если у вас нет веских оснований.
Мы можем сделать это, используя 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
Как вы видите, это всего лишь небольшой пример - вы можете получить несколько значений + форматировать их и использовать их или передать в файл шаблона.
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/
Попробуйте вот так для строки запроса:
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)
Я пришел сюда в поисках строки запроса, а не о том, как получить значения из строки запроса.
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)
Выход:
Рекомендации:
Это можно сделать с помощью request.args.get()
. Например, если в строке запроса date
поля, доступ к ней можно получить с помощью
date = request.args.get('date')
Не забудьте добавить " request
" в список импорта из колбы, т.е.
from flask import request
@app.route('/data')
def data():
query_string= request.args.get('data')
return render_template("data.html",query_string=query_string)