2015-09-17 53 views
2

我有一个动态生成的行数,其中包含带缺省值(order_quantity)的表中的文本框。基本上在一篇文章中,我希望我的sql项目表根据其ID来更新这些文本框的值。通过Python Flask获取一个HTML输入的多个值

{% for i in items %} 
     <tr> 
      <td> 
       ... 
      </td> 
      <td> 
       ... 
      </td> 
      <td> 
       <div class="form-group"> 
        <input type="number" id="amount" name="amount" value="{{ i.order_quantity }}"> 
       </div> 
      </td> 
      <td> 
      ... 
      </td> 
     </tr> 
     {% endfor %} 

传递order_quantity或物品ID没有问题,但显然不是两个。

HTML:

<input type="number" id="amount" name="amount" value="{{i.item_id}} {{ i.order_quantity }}"> 

的Python:

amount = request.form.getlist('amount') 
    print amount 
    for i in amount: 
     print i 

综上所述,如何可以通过的数量和其相对id列在便于服务器端提取一个简单的方式为每个文本框?

回答

2

我想你可以通过增加持有ITEM_ID

例一个隐藏的输入字段实现你想要的:

<td> 
    <div class="form-group"> 
     <input type="number" id="amount" name="amount" value="{{ i.order_quantity }}"> 
     <input type="hidden" name="item_id" value="{{ i.item_id }}"/> 
    </div> 
</td> 

当您在瓶接收输入,你可以匹配的ID给自订单被保留以来的金额。

amounts = request.form.getlist('amount') 
item_ids = request.form.getlist('item_id') 
for item_id, idx in enumerate(item_id): 
    amount = amounts[idx] 
    # do something with item_id and amount 
1

因此,有几个哈克方法可以做到这一点,你可以例如逗号分隔的值,例如ID和金额,

<input type="number" id="amount" name="amount" value="{{ i.order_quantity }}_{{ i.item_id }}"> 

,然后用一些分裂它在服务器端逻辑。

for item in request.args: 
    quantity, item_id = item.split('_') 

但是,上面假设你不打算编辑表格中的金额。在大多数情况下,这可能是无用的。因此,让我们来看一个更可编辑的解决方案......

我个人做这种方式,通过将项目ID的名称

<input type="number" id="amount" name="amount-{{ i.item_id }}" value="{{ i.order_quantity }}"> 

然后用逻辑

for key, amount in request.args.items(): 
    item_id = key.split('-')[1] 
    # And the amount var has the amount. 
0

一个适合我 -

amounts = request.form.getlist('amount') 
item_ids = request.form.getlist('item_id') 
for idx, am in zip(item_ids, amounts): 

    print idx, am 

使用隐藏的输入字段(ITEM_ID)工作junnytony的溶液的建议 以上。

相关问题