Я пытаюсь сделать простой REST API, используя приложение для бутылок Python. Я столкнулся с проблемой получения переменных GET из глобального объекта запроса. Любые предложения, как получить это из запроса GET?
Как получить переменные GET в приложении для бутылок Python
Ответы (4)
Они хранятся в объекте request.query
.
http://bottlepy.org/docs/dev/tutorial.html#query-variables
Похоже, вы также можете получить к ним доступ, рассматривая атрибут request.query
как словарь:
request.query['city']
Таким образом, dict(request.query)
создаст словарь всех параметров запроса.
Как отмечает @mklauber, это не сработает для многобайтовых символов. Похоже, лучший метод:
my_dict = request.query.decode()
or:
dict(request.query.decode())
иметь объект dict
вместо объекта <bottle.FormsDict object at 0x000000000391B...>
.
my_dict = request.query.decode()
правильный путь.
- person Nathan Villaescusa; 24.10.2012
Если вы хотите их все:
from urllib.parse import parse_qs
dict = parse_qs(request.query_string)
Если вы хотите один:
one = request.GET.get('one', '').strip()
request.query.one
- person jfs; 24.10.2012
Можете ли вы попробовать это, пожалуйста:
Для этого примера: http://localhost:8080/command?param_name=param_value
В вашем коде:
param_value = request.query.param_name
из документов
name = request.cookies.name
# is a shortcut for:
name = request.cookies.getunicode('name') # encoding='utf-8' (default)
# which basically does this:
try:
name = request.cookies.get('name', '').decode('utf-8')
except UnicodeError:
name = u''
Таким образом, вы можете предпочесть использовать метод доступа к атрибуту (request.query.variable_name), а не request.query.get('variable_name')
Еще один момент: вы можете использовать request.params.variable_name, который работает как для методов GET, так и для POST, вместо того, чтобы переключать request.query.variable_name или request.forms.variable_name в зависимости от GET/POST.