首頁 >後端開發 >Python教學 >[Python]使用WTForms處理可變長的表單

[Python]使用WTForms處理可變長的表單

大家讲道理
大家讲道理原創
2016-11-07 10:20:331887瀏覽

在知乎上看到的問題: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

reee

reee :

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的部分。


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn