【发布时间】:2019-02-07 21:52:40
【问题描述】:
所以当我来到关于在注册帐户时检查用户名或电子邮件是否已被使用的部分时,我正在关注 Corey Schafer 的 Flask 教程。我一生都无法理解这段代码是如何工作的,我猜是因为我是 Python 和 Flask 的新手,但它不应该这么混乱。
class RegistrationForm(FlaskForm):
username = StringField('Username', validators=[DataRequired(), Length(min=4,
max=20)])
email = StringField('Email', validators=[DataRequired(), Email()])
password = PasswordField('Password', validators=[DataRequired()])
password_confirm = PasswordField('Confirm password', validators=[DataRequired(),EqualTo('password')])
submit = SubmitField('Sign Up')
def validate_username(self, username):
user = User.query.filter_by(username=username.data).first()
if user:
raise ValidationError('That username is taken. Please choose
another.')
def validate_email(self, email):
user = User.query.filter_by(email=email.data).first()
if user:
raise ValidationError('That email is taken. Please choose another.')
所以,我不明白的具体部分是 RegistrationForm 类中的两个函数:首先,这两个函数如何知道用户名和电子邮件是什么?例如,如果我将函数定义中的“用户名”和“电子邮件”参数更改为“u_n”和“e_mail”,然后使用“u_n.data”和“e_mail.data”运行查询,代码仍然有效. 其次,如果我要将函数重命名为其他任何代码,代码就会停止工作,我不明白为什么?
我知道这个问题的答案不会太复杂,但这让我非常恼火。任何帮助将不胜感激。
【问题讨论】:
-
你是如何导入用户的?
标签: python flask flask-sqlalchemy flask-wtforms