最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

[Python]使用WTForms处理可变长的表单

来源:动视网 责编:小采 时间:2020-11-27 14:28:02
文档

[Python]使用WTForms处理可变长的表单

[Python]使用WTForms处理可变长的表单:在知乎上看到的问题:python flask的wtforms可以处理可变长的表单吗?问题描述form中的元素会变多。 比如有一个表格: 我喜欢的东西: 可以增加任意个物品(这几个物品填在不同的框),然后提交。 实现这个需求,需要用到FieldList一个简单的例子 :f
推荐度:
导读[Python]使用WTForms处理可变长的表单:在知乎上看到的问题:python flask的wtforms可以处理可变长的表单吗?问题描述form中的元素会变多。 比如有一个表格: 我喜欢的东西: 可以增加任意个物品(这几个物品填在不同的框),然后提交。 实现这个需求,需要用到FieldList一个简单的例子 :f


在知乎上看到的问题: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)
# ['苹果', '梨', '香蕉']

下面是再复杂一点的例子:

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)

提交表单数据:

products-0-name=Iphone6
products-0-count=1
products-1-name=小米手机
products-1-count=2

提交json数据:

{"products": [{"name": "Iphone6", "count": 1}, {"name": "小米手机", "count": 2}]}

输出结果显示:

print(form.products.data)
# [{'name': 'Iphone6', 'count': 1}, {'name': '小米手机', 'count': 2}]

那么问题来了,动态的关键是什么?


没错,就是你看到的字段名称中的以0开始的数字啊

想要加一项怎么办?

最大的数字加1,就是它!

那在html中js代码是实现动态的关键,相关代码就不展示了,这里只关注python的部分。

文档

[Python]使用WTForms处理可变长的表单

[Python]使用WTForms处理可变长的表单:在知乎上看到的问题:python flask的wtforms可以处理可变长的表单吗?问题描述form中的元素会变多。 比如有一个表格: 我喜欢的东西: 可以增加任意个物品(这几个物品填在不同的框),然后提交。 实现这个需求,需要用到FieldList一个简单的例子 :f
推荐度:
标签: 表单 python python的
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top