25

我正在尝试使用 Python bottle 应用程序制作一个简单的 REST api。我在从请求全局对象中检索 GET 变量时遇到问题。任何建议如何从 GET 请求中检索它?

4

4 回答 4

33

它们存储在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...>对象。

于 2012-10-23T21:21:39.977 回答
6

如果你想要它们:

from urllib.parse import parse_qs

dict = parse_qs(request.query_string)

如果你想要一个:

one = request.GET.get('one', '').strip()
于 2012-10-23T21:26:20.933 回答
3

你能试试这个吗:

对于这个例子:http://localhost:8080/command?param_name=param_value

在您的代码中:

param_value = request.query.param_name
于 2016-09-02T10:52:37.357 回答
0

从文档

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。

于 2019-01-25T16:45:35.230 回答