在制作用户注册登录界面时候涉及到表单操作
- 原生表单注册:从表单中获取数据只需要执行request.form['nametoget']即可
@app.route('register') def register(): if request.method == 'GET': return render('register.html') else: name = request.from['username'] password = request.from['password'] return '您的用户名为%s,密码是%s'%(name, password)
- 自定义的表单类:需继承FlaskForm,
# 自定义的表单类继承FlaskForm class RegForm(FlaskForm): ''' 定义表单字段 ''' # 用户名字段及其预校验规则 name = StringField( label='用户名', # 定义预校验规则 validators=[ # 必须有数据,否则跳出温馨提示 DataRequired(message='傻鸟必须填写用户名'), # 字符长度必须在6-20位之间,否则跳出温馨提示 Length(min=6, max=20, message='傻吊用户名必须在6-20位之间') ] ) # 密码字段及其预校验规则 password = PasswordField( label='密码', validators=[ DataRequired(message='傻叉必须填写密码'), Length(6, 20, '傻蛋密码长度必须在6-20位之间')] ) # 重复密码字段及其预校验规则 pwdRepeat = PasswordField( label='重复密码', validators=[ # 必须与password中的数据内容保持一致,否则温馨提示 EqualTo('password', message='傻瓜两次密码不一致') ] ) # 提交按钮 submit = SubmitField(label='提交') ''' 自定义字段校验规则(当系统的规则无法满足需求时) ''' # 自定义预校验规则:def validate_filedname(self,field):...raise ValidationError('error msg...') # 不符合规则时抛出ValidationError,否则啥也不干 def validate_name(self, field): # 检测用户在字段中输入的内容是否是全中文 if not re.match(r'^[\u4e00-\u9fa5]+$', field.data): # 不符合规则时抛出校验异常 raise ValidationError(message='用户名必须为中文') # 一切数据(field.data)都是合法的一个校验规则... def validate_password(self, field): pass