处理多个POST输入值与Python瓶

问题描述 投票:2回答:3

在瓶,让我们说我有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(“1”))。

有没有一种方法来处理表单中的所有输入。我已经看到request.params和request.query ...

@route('/machine', method='POST')
def machine_learn():
    my_dict = dict(request.params)
    return str(my_dict)

...但不完全了解我如何使用这些来获取所有输入数据不是词典列表。当我使用上面的代码,我得到一个空的字典

任何帮助表示赞赏。

python bottle
3个回答
1
投票

request.forms返回在请求中的所有输入的Python Dictionary

所以,你可以动态地处理请求,这样

for key, value in request.forms.items():
  print("For name " + key + ", the value is " + value)


0
投票

request.formsbottle.FormsDict类的一个实例。 1

当您检查bottle.MultiDict类FormsDict子类,有可用于检索包含字段名称和值的元组列表的allitems方法。 2

form_items = request.forms.allitems()

0
投票

只是一些额外的帮助。

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()))

现在,这可以采取任何形式,或查询后并结合成一个有效载荷。究其原因,dict()是因为瓶子在技术上不会返回一个真正的字典,取而代之的则是不有一个适当的字典的所有功能FormsDict。这使得这一过程简单,一切都变成字典。

© www.soinside.com 2019 - 2024. All rights reserved.