【发布时间】:2012-10-13 21:56:44
【问题描述】:
我正在尝试使用 Python Bottle 应用程序制作一个简单的 REST api。 我在从请求全局对象中检索 GET 变量时遇到问题。 任何建议如何从 GET 请求中检索它?
【问题讨论】:
标签: python bottle query-parameters
我正在尝试使用 Python Bottle 应用程序制作一个简单的 REST api。 我在从请求全局对象中检索 GET 变量时遇到问题。 任何建议如何从 GET 请求中检索它?
【问题讨论】:
标签: python bottle query-parameters
它们存储在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()
或:
dict(request.query.decode())
拥有dict 而不是<bottle.FormsDict object at 0x000000000391B...> 对象。
【讨论】:
my_dict = request.query.decode() 似乎是正确的方式。
如果你想要全部:
from urllib.parse import parse_qs
dict = parse_qs(request.query_string)
如果你想要一个:
one = request.GET.get('one', '').strip()
【讨论】:
request.query.one
你可以试试这个吗:
对于这个例子: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 方法,而不必根据 GET/POST 切换 request.query.variable_name 或 request.forms.variable_name。
【讨论】: