瓶子 request.forms.get returns None

bottle request.forms.get returns None

我正在尝试使用 Bottle 将信息从 Web 表单发送到 python。我正在使用 get 发送变量 "test",但是当我调用 "test" 的请求函数时,它 returns none。我一直在使用 bottle tutorial 作为参考。

这是我的网络表单:

<form action="http://localhost:8080/page" method="get">
<input type="number" name="test" step="5">
<input type="submit" name="my-form" value="GO">
</form>

如果您在字段中键入 1 并单击开始,您将进入以下 URL:

http://localhost:8080/page?test=10&my-form=GO

这是瓶子 python 代码:

@route('/page', method='GET')
def index():
testvar = request.forms.get('test')
return 'Hello %s' % testvar

据我了解,request.forms.get('test') 应该从 url 中的 test=10 检索值并将其传递到 testvar。但是,我收到 none 的值,这意味着 var 为空。

谢谢!

根据documentationrequest.forms只会收集POST和PUT参数:

forms

Form values parsed from an url-encoded or multipart/form-data encoded POST or PUT request body. The result is returned as a FormsDict. All keys and values are strings.

在你的例子中,你有 HTTP GET 形式,使用 request.params.

由于您执行的是 HTTP GET,参数不是作为表单传递的,而是作为查询参数传递的。 Bottle 提供 request.query 来访问这些参数:

The query_string parsed into a FormsDict. These values are sometimes called “URL arguments” or “GET parameters”, but not to be confused with “URL wildcards” as they are provided by the Router.

request.forms 用于 HTTP POST:

Form values parsed from an url-encoded or multipart/form-data encoded POST or PUT request body. The result is returned as a FormsDict. All keys and values are strings. File uploads are stored separately in files.