因此,当我谈到在注册帐户时检查用户名或电子邮件是否已被使用时,我正在关注 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.')
Run Code Online (Sandbox Code Playgroud)
那么,我不明白的具体部分是RegistrationForm类中的两个函数:首先,这两个函数如何知道用户名和电子邮件是什么?例如,如果我将函数定义中的“用户名”和“电子邮件”参数更改为“u_n”和“e_mail”之类的内容,然后使用“u_n.data”和“e_mail.data”运行查询,则代码仍然有效. 其次,如果我要将函数重命名为其他任何内容,代码将停止工作,我不明白为什么?
我知道这个问题的答案不能太复杂,但这让我非常恼火。任何帮助将不胜感激。