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

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

大家讲道理
發布: 2016-11-07 10:20:33
原創
1883 人瀏覽過

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


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板