Zhihu에서 본 질문: Python 플라스크의 wtform이 가변 길이 형식을 처리할 수 있나요?
문제 설명
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 data:
{"products": [{"name": "Iphone6", "count": 1}, {"name": "小米手机", "count": 2}]}
출력 결과는 다음과 같습니다.
print(form.products.data) # [{'name': 'Iphone6', 'count': 1}, {'name': '小米手机', 'count': 2}]
그럼 질문은 역학의 핵심이 무엇인지입니다.
네, 보시는 필드명이 0으로 시작하는 숫자입니다.
항목을 추가하고 싶으면 어떻게 해야 하나요?
1을 더한 가장 큰 숫자는 바로!
HTML의 js 코드는 역학을 구현하는 핵심입니다. 여기서는 Python 부분에만 중점을 두겠습니다.