【问题标题】:Processing Multiple POST Input Values with Python Bottle使用 Python Bottle 处理多个 POST 输入值
【发布时间】:2019-02-05 01:50:33
【问题描述】:

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

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

感谢任何帮助。

【问题讨论】:

    标签: python bottle


    【解决方案1】:

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

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

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

    【讨论】:

    • 欢迎您!祝您在网络应用程序上好运! :-)
    【解决方案2】:

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

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

    form_items = request.forms.allitems()
    

    【讨论】:

      【解决方案3】:

      只是为了一些额外的帮助。

      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() 的原因是因为从技术上讲,Bottle 并不返回真正的字典,而是一个 FormsDict,它不具备字典的所有功能。这使该过程变得简单,并将所有内容都变成了字典。

      【讨论】:

        猜你喜欢
        • 2017-07-23
        • 1970-01-01
        • 2021-12-07
        • 1970-01-01
        • 1970-01-01
        • 2020-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多