![](/img/trans.png)
[英]Python Flask flask-admin wtforms.validators AttributeError
[英]Validators in wtforms Flask Python
我嘗試在我的注冊頁面中將數字范圍添加到密碼,以確保我的密碼列中至少有一個數字,當我刪除數字范圍時,它工作正常,但如果我再次添加它,它會引發錯誤
from flask_wtf import FlaskForm from wtforms import StringField, PasswordField, SubmitField, BooleanField from wtforms.validators import DataRequired, length, Email, EqualTo, NumberRange
class RegistrationForm(FlaskForm):
username = StringField('Username', validators=[DataRequired(),
length(min=2, max=20)] )
email = StringField('Email', validators=[DataRequired(),
Email(message="Please input a valid email address")])
password = PasswordField('Password', validators=[DataRequired(),
length(min=5, max=12), NumberRange(min=1, max=3)])
confirm_password = PasswordField('Confirm_Password',
validators=[DataRequired(),
EqualTo('password', message="Your password does not match")] )
submit = SubmitField('SignUp')
class LoginForm(FlaskForm):
email = StringField('Email', validators=[DataRequired(),
Email()])
password = PasswordField('Password', validators=[DataRequired() ])
remember = BooleanField('Remember me')
submit = SubmitField('Login')
這是我嘗試添加數字范圍時的錯誤
TypeError
TypeError: must be real number, not str
問題是NumberRange()
只接受數字類型(整數、浮點數、雙精度等),但在傳遞字符串時總是會失敗。 這就是您的錯誤消息告訴您的內容,“輸入必須是實數,而不是字符串”。
解決方案:使用Regexp()
Regexp()
將允許您將用戶的輸入與正則表達式進行比較。 您可以根據需要將其復雜化,但要解決“至少一位數”的當前要求,以下應該可行: Regexp('/d')
最后一點。 我注意到您使用的是DataRequired()
,WTForms 文檔建議改用InputRequired()
,除非在我沒有看到在這里應用的特定用例中。
參考資料: https ://wtforms.readthedocs.io/en/2.3.x/validators/
我遇到了這個問題,我將 NumberRange 更改為 Length .. 並且它起作用了'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.