使用 Python Bottle 处理多个 POST 输入值
Processing Multiple POST Input Values with Python Bottle
在 Bottle 中,假设我有一个包含 10 个输入的表单:
<form method="POST" action="/machine" enctype="multipart/form-data">
<input type="text" name="one" placeholder="one" required>
<input type="text" name="two" placeholder="two" required>
...
<input type="text" name="ten" placeholder="ten" required>
</form>
然后我想处理所有可能的输入,不想通过在 POST 路由上单独调用每个输入来静态地执行此操作(例如 request.forms.get("one") ).
有没有办法处理表单中的所有输入。我一直在看到 request.params 和 request.query ...
@route('/machine', method='POST')
def machine_learn():
my_dict = dict(request.params)
return str(my_dict)
...但不完全理解我如何使用它们将所有输入数据作为字典或列表获取。当我使用上面的代码时,我得到一个空字典
感谢任何帮助。
request.forms
returns 请求中所有输入的 Python Dictionary。
所以你可以像这样动态处理请求
for key, value in request.forms.items():
print("For name " + key + ", the value is " + value)
request.forms
是 bottle.FormsDict
class 的实例。 1
当您使用 FormsDict subclasses 检查 bottle.MultiDict
class 时,有一个 allitems
方法可用于检索包含字段名称元组的列表和价值。 2
form_items = request.forms.allitems()
只是为了一些额外的帮助。
def merge_dicts(*args):
result = {}
for dictionary in args:
result.update(dictionary)
return result
class Api(object):
def __init__(self, user, request, option):
self.user = user
self.option = option
self.payload = merge_dicts(dict(request.forms), dict(request.query.decode()))
这现在可以采用任何形式,或查询 post 并将它们组合成有效载荷。 dict()
的原因是因为 Bottle 在技术上不是 return 真正的字典,而是一个 FormsDict,它不具备字典的所有功能。这使该过程变得简单,并将所有内容都变成了字典。
在 Bottle 中,假设我有一个包含 10 个输入的表单:
<form method="POST" action="/machine" enctype="multipart/form-data">
<input type="text" name="one" placeholder="one" required>
<input type="text" name="two" placeholder="two" required>
...
<input type="text" name="ten" placeholder="ten" required>
</form>
然后我想处理所有可能的输入,不想通过在 POST 路由上单独调用每个输入来静态地执行此操作(例如 request.forms.get("one") ).
有没有办法处理表单中的所有输入。我一直在看到 request.params 和 request.query ...
@route('/machine', method='POST')
def machine_learn():
my_dict = dict(request.params)
return str(my_dict)
...但不完全理解我如何使用它们将所有输入数据作为字典或列表获取。当我使用上面的代码时,我得到一个空字典
感谢任何帮助。
request.forms
returns 请求中所有输入的 Python Dictionary。
所以你可以像这样动态处理请求
for key, value in request.forms.items():
print("For name " + key + ", the value is " + value)
request.forms
是 bottle.FormsDict
class 的实例。 1
当您使用 FormsDict subclasses 检查 bottle.MultiDict
class 时,有一个 allitems
方法可用于检索包含字段名称元组的列表和价值。 2
form_items = request.forms.allitems()
只是为了一些额外的帮助。
def merge_dicts(*args):
result = {}
for dictionary in args:
result.update(dictionary)
return result
class Api(object):
def __init__(self, user, request, option):
self.user = user
self.option = option
self.payload = merge_dicts(dict(request.forms), dict(request.query.decode()))
这现在可以采用任何形式,或查询 post 并将它们组合成有效载荷。 dict()
的原因是因为 Bottle 在技术上不是 return 真正的字典,而是一个 FormsDict,它不具备字典的所有功能。这使该过程变得简单,并将所有内容都变成了字典。