我假設每個閃存卡都有一個標題和一些內容。在這種情況下最有意義的表單字段的類型是來自WTForms的TextField
和TextAreaField
。由於您正在使用Flask-WTForms,因此您需要繼承基礎對象Form
。
from flask.ext.wtf import Form
from wtforms import TextField, TextAreaField
class FlashCard(Form):
title = TextField('Card title:')
content = TextAreaField('Card content:')
當你調用這個在燒瓶視圖功能:
@app.route('/')
def index():
my_form = FlashCard()
if my_form.validate_on_submit:
# save flash card data here.
return render_template('index.html', my_form=my_form)
如果我是你,我會用一個模式的形式。 Bootstrap有一個很容易使用的模式(需要Javascript)。另一種選擇是在用戶想要添加閃存卡時重定向到表單頁面。
重點是您可以對所有閃存卡使用相同的表單實例。希望這可以幫助。
如果你真的需要 「動態形式組成」,它是這樣的(from wtforms doc's):
def my_view():
class F(MyBaseForm):
pass
F.username = StringField('username')
for name in iterate_some_model_dynamically():
setattr(F, name, StringField(name.title()))
form = F(request.POST, ...)
# do view stuff