我想使用WTForms和Jinja2在Flask中創建不同的表單。我打電話給mysql,它有字段的類型。在Flask中的WTform中創建動態字段
所以即表可能是:
form_id | type | key | options | default_value
1 | TextField | title | | test1
1 | SelectField | gender |{'male','female'}|
2 | TextAreaField| text | | Hello, World!
然後我就form_id查詢。那麼我想用WTforms創建一個具有返回行的字段的表單。
對於一個正常的形式我做的:
class MyForm(Form):
title = TextField('test1', [validators.Length(min=4, max=25)])
gender = SelectField('', choices=['male','female'])
def update_form(request):
form = MyForm(request.form)
if request.method == 'POST' and form.validate():
title = form.title.data
gender = form.gender.data
#do some updates with data
return .....
else:
return render_template('template.html',form)
#here should be something like:
#dict = query_mysql()
#new_form = MyForm(dict);
#render_template('template.html',new_form)
我覺得最好的是創建一個空的形式,然後在添加字段一個for循環,但是如果一個窗體回我怎麼能驗證如果我沒有在課堂上定義它,那麼形式嗎?我在form中有form_id,所以我可以生成它然後驗證。