當前位置:成語大全網 - 新華字典 - flask如何展示表格

flask如何展示表格

wtforms的使用,可以知道,它是壹個類,然後的話,它的類屬性就是對應的表單的各種類型

那麽,為了得到壹個,動態的表單,就是所謂的不定數量的表單,簡單理解就是它的類屬性是動態的

所以,我沒有采用寫在壹個文件的,固定的類(可以看看它的官方網站的例子,就是這個)

我是在控制器裏,動態構建,,,如下的,是我壹個自己的項目裏用的方法,可以參考下:

class ProductSkuForm(Form):

attr = dict()

for i in data['pro_category_info']['attribute_list']:

attr[i['name']] = StringField(i['title'], [validators.InputRequired(i['title']+u'必填')], description=i['title'])

locals().update(attr)

price = DecimalField(u'產品庫存價格:',

[validators.DataRequired(u'產品庫存價格為必填項,請正確填寫'),

validators.NumberRange(min=1, message=u'請填寫正確價格(最小為1)')],

places=2, description=u'產品價格')

stock = IntegerField(u'庫存數:', [validators.InputRequired(u'產品庫存數必填')], description=u'產品庫存數量')

排版不好,,不懂知乎的排版,,將就下看著吧

這是我的壹個微商系統裏使用的,為了動態構建SKU時所用的,核心就前面的幾句

attr = dict() #產品屬性字典

for i in data['pro_category_info']['attribute_list']:

attr[i['name']] = StringField(i['title'], [validators.InputRequired(i['title']+u'必填')], description=i['title'])

# 通過前面的從數據庫裏,讀取的,用戶自己建的產品屬性,,對產品屬性字典構造

locals().update(attr) # 核心,通過locals().update函數更新類內部變量

後面就是兩個,固定的類屬性價格和庫存

另壹個,更好的方法,應該是用Python的多重繼承來實現,,因為,wtforms的官方網站裏,就有例子,它的表單類,是可以繼承的(下面是復制的wtforms的官方網站)

Form Inheritance

Forms may subclass other forms as needed. The new form will contain all fields of the parent form, as well as any new fields defined on the subclass. A field name re-used on a subclass causes the new definition to obscure the original.

class PastebinEdit(Form):

language = SelectField(u'Programming Language', choices=PASTEBIN_LANGUAGES)

code = TextAreaField()

class PastebinEntry(PastebinEdit):

name = StringField(u'User Name')

可以看到PastebinEntry繼承了PastebinEdit類後,它就是3個屬性了,那麽,在控制器裏,動態的,讓壹個類,多重繼承,就可以得到壹個動態的表單了,這個還只是想法,,還沒有自己實現過,,不過,應該是可以實現的,,妳可以試下