Heim > Backend-Entwicklung > Python-Tutorial > [Python] Verwenden Sie WTForms, um Formulare variabler Länge zu verarbeiten

[Python] Verwenden Sie WTForms, um Formulare variabler Länge zu verarbeiten

大家讲道理
Freigeben: 2016-11-07 10:20:33
Original
1878 Leute haben es durchsucht

Frage gesehen auf Zhihu: Können die WTForms von Python Flask Formen mit variabler Länge verarbeiten?

Problembeschreibung

form中的元素会变多。
比如有一个表格:
我喜欢的东西: 可以增加任意个物品(这几个物品填在不同的框),然后提交。
实现这个需求,需要用到FieldList
Nach dem Login kopieren

Ein einfaches Beispiel:

from wtforms import Form
from wtforms.fields import FieldList, StringField
class MyForm(Form):
    names = FieldList(StringField('名称'), label='物品列表', min_entries=1)
Nach dem Login kopieren

Formulardaten senden:

names-0=苹果
names-1=梨
names-2=香蕉
Nach dem Login kopieren

JSON-Daten senden:

{"names": ["苹果", "梨", "香蕉"]}
Nach dem Login kopieren

Anzeige der Ausgabeergebnisse:

print(form.names.data)
# ['苹果', '梨', '香蕉']
Nach dem Login kopieren

Das Folgende ist ein komplizierteres Beispiel:

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)
Nach dem Login kopieren

Formulardaten senden:

products-0-name=Iphone6
products-0-count=1
products-1-name=小米手机
products-1-count=2
Nach dem Login kopieren

Senden JSON-Daten:

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

Das Ausgabeergebnis zeigt:

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

Dann stellt sich die Frage: Was ist der Schlüssel zur Dynamik?


Ja, es ist die Nummer, die mit 0 im Feldnamen beginnt, den Sie sehen.

Was soll ich tun, wenn ich einen Artikel hinzufügen möchte?

Die größte Zahl plus 1 ist es!

Der js-Code in HTML ist der Schlüssel zur Erzielung von Dynamik. Der relevante Code wird hier nicht nur auf den Python-Teil gezeigt.


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage