Flask-wtformsで次のコードを使用しています。 SelectFieldでさまざまなバリデータを使用した場合と使用しなかった場合を試しましたが、ユーザーがフォーム検証を提出して初めてfalseを返します。フラスコのWTFのバリデーション最初のサブミットではFalse、2番目ではTrue
さらにバリデーションメソッドを削除しようとしましたが、SelectFieldにバリデータを残しておき、最初のサブミット時に検証がFalseを返します。
SelectFieldが-1の値に設定されていないかどうかを知りたいと思っています(つまり、ビューメソッドによって設定されていて、現在アクティブなアイテムがユーザーに満足していると思われます)。私はわからない、なぜ第二私は、文字列を使用したフォーム
forms.py
something = SelectField(label = 'Something', choices = [('-1','Select Something')], default=('-1','Select Something'), id='select_something', validators=[validators.DataRequired(message='Nothing selected')])
#NB the line below with no validator also prints "--validate() returned false"
#something = SelectField(label = 'Something', choices = [('-1','Select Something')], default=('-1','Select Something'), id='select_something')
submit = SubmitField('Submit')
def validate(self):
rv = Form.validate(self)
if not rv:
print("--validate() returned false")
return False
#the line below never fired, see fix in following line
#if self.something.data == -1:
if str(self.something.data) == '-1':
logger.debug("--validate() data==-1")
return False
return True
view.py
form = Something(request.form)
if request.method == 'GET':
#get tuple_list from database
...
form.something.choices = tuple_list
form.something.default = tuple_list[0]
if request.method == 'POST' and form.validate():
print('Something added.')
何 ' form.errorsは言う?あなたのテンプレートに 'form.csrf_token'を含めて、あなたの設定に' SECRET'キーをセットしましたか? – MrLeeh
@MrLeeh、thanks、errors empty、crsf、scret_keyがOKに設定されています。私はいくつかの問題を発見しました - 一つは検証メソッド - データは-1と決して同じではありません。また、request.method == 'GET'ブロックに問題がありましたが、whileを削除して作業しています。 –