在知乎上看到的問題:python flask的wtforms可以處理可變長的表單嗎?
問題描述
form中的元素会变多。 比如有一个表格: 我喜欢的东西: 可以增加任意个物品(这几个物品填在不同的框),然后提交。 实现这个需求,需要用到FieldList
一個簡單的例子:
from wtforms import Form from wtforms.fields import FieldList, StringField class MyForm(Form): names = FieldList(StringField('名称'), label='物品列表', min_entries=1)
提交表單資料:
names-0=苹果 names-1=梨 names-2=香蕉
提交json資料:
{"names": ["苹果", "梨", "香蕉"]}
輸出資料表
print(form.names.data) # ['苹果', '梨', '香蕉']
reee
reeereee :
from wtforms import Form from wtforms.fields import FieldList, FormField, StringField, IntegerField class ProductForm(Form): name = StringField('名称') count = IntegerField('数量') class MyForm(Form): products = FieldList(FormField(ProductForm), label='产品列表', min_entries=1)
提交json資料:
products-0-name=Iphone6 products-0-count=1 products-1-name=小米手机 products-1-count=2
輸出結果顯示:
{"products": [{"name": "Iphone6", "count": 1}, {"name": "小米手机", "count": 2}]}
那麼問題來了,動態的關鍵是什麼?
沒錯,就是你看到的欄位名稱中的以0開始的數字啊
想要加一項怎麼辦?
最大的數字加1,就是它!
那在html中js程式碼是實現動態的關鍵,相關程式碼就不展示了,這裡只專注於python的部分。