[英]how to overwrite name in wtforms Flask
new.html
{{ form.particular(name='particular[]') }}
我嘗試使用上面的代碼在輸入字段中分配名稱,但出現以下錯誤。 但是,如果我添加一個類或id來替換名稱(例如:{{form.particular(id ='particulars')}}),則可以,但不適用於名稱,只會輸出以下錯誤:
builtins.TypeError
TypeError:html_params()為關鍵字參數“名稱”獲得了多個值
任何解決方案。 先感謝您 :)
如果它通過渲染模板發送表單數據,則只需將變量名放在{{var_name}}之間的模板中,並在代碼中在返回渲染模板函數中使用此var_name。
定義表單時:
class WebForm(FlaskForm):
particular = StringField('some_description')
然后,您將擁有一個name=particular
specific的字段,這是wtforms的基礎功能。 因此,當您嘗試執行form.particular(name='particular[]')
時,由於無法在jinja2模板中重新定義名稱,因此會出現多值錯誤。
您可以通過以下兩種方式之一覆蓋名稱(請注意,在jinja2渲染發生之前,兩者都是服務器端的):
1)靜態地:即定義一個新名稱:
class WebForm(FlaskForm):
particular_new = StringField('some_description')
2)動態:即包裝函數創建一個修改后的靜態形式:
def WebForm(new_name):
class TempForm(FlaskForm):
pass
setattr(TempForm, new_name, StringField('some_description'))
return TempForm()
# will create a WebForm with attribute name of 'new_name' as StringField
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.