我想在 wtform 中創建一個 floatfield 來編輯資料庫中的值,如果我們不想更改該屬性的值,可以將其留空。但是,當我將該欄位保留為空并提交表單時,它會給出驗證錯誤訊息,“不是有效的浮點值。”
這是我使用的代碼
def Inrange(form, field):
if form.movie_rating.data:
if 0 > int(form.movie_rating.data) < 10:
raise ValidationError('Rating should be from 0 to 10')
class EditForm(FlaskForm):
movie_rating = FloatField('Your Rating out of 10', validators=[Inrange])
review = StringField('Review')
# movie_id = HiddenField('id')
submit = SubmitField('Done')
我可以毫無問題地將 Stringfield 留空,但 Floatfield 不行。
有什么辦法可以在仍然使用 Floatfield 的同時解決這個問題?如果不是,其他選項是什么?
uj5u.com熱心網友回復:
您可以使用 wtforms 提供的驗證器來驗證輸入。
Optional在這種情況下允許空欄位并停止驗證。
欄位的回傳值為 thenNone。NumberRange確保輸入在定義的范圍內。
from wtforms.validators import (
NumberRange,
Optional
)
class EditForm(FlaskForm):
movie_rating = FloatField(
'Your rating out of 10',
validators=[
Optional(),
NumberRange(0, 10, 'Rating should be from 0 to 10')
]
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/529870.html
標籤:烧瓶烧瓶-wtforms
