class addForm(FlaskForm): language = core.SelectField( label='基础环境镜像:', choices=language_choices(), ) pluginname = simple.StringField( label='接口名称: ', widget=widgets.TextInput(), # validators=[DataRequired(message='接口名称不能为空'), # NoneOf(['t1', 't2', 't10', '3'], message='wuxiao', values_formatter = 'caonima')] # render_kw={ # "placeholder":"请输入账号!", # "required":'required' #表示输入框不能为空,并有提示信息 # } ) inputfilename = simple.StringField( label='输入文件名: ', widget=widgets.TextInput(), # validators=[DataRequired()] ) inputtype = core.SelectMultipleField( label='输入数据类型:', choices=(('txt', 'txt'), ('world', 'world'), ('jpg', 'jpg'), ('png', 'png')), default=['txt', 'world', 'jpg', 'png']) outputfilename = simple.StringField(label='输出文件名:', widget=widgets.TextInput()) outputtype = core.SelectMultipleField( label='输出数据类型:', choices=(('txt', 'txt'), ('world', 'world'), ('jpg', 'jpg'), ('png', 'png')), option_widget=widgets.CheckboxInput(), default=['txt', 'world', 'jpg', 'png']) sources = core.SelectField(label='软件源:', render_kw={'class': 'index-select'}, choices=sources_choices()) textarea = TextAreaField( label='接口运行环境:', render_kw={'class': 'text-control'}, # validators=[DataRequired()] ) pluginfile = FileField( label='文件选择:', # validators=[FileRequired(), # FileAllowed(['jpg','jpeg','png','gif'])] ) runCommand = simple.StringField(label='运行命令:', widget=widgets.TextInput()) detail = TextAreaField( label='接口描述:', render_kw={'class': 'text-detail'}, # validators=[DataRequired()] ) save = simple.SubmitField('检查') pulish = simple.SubmitField('提交')
class RegForm(Form): username = simple.StringField(label="用户名:", validators=[ validators.Length( min=4, max=10, message="用户名不能小于%(min)d,不能大于%(max)d") ]) password = simple.PasswordField( label="密码:", validators=[ validators.Length(max=10, min=6, message="password不能小于%(min)d,不能大于%(max)d") ]) repassword = simple.PasswordField( label="确认眼神:", validators=[validators.EqualTo("password", message="眼神未确认")]) email = simple.StringField(label="邮箱", validators=[validators.Email(message="邮箱格式不符")]) gender = core.RadioField(label="性别:", choices=[(1, "女"), (2, "男")], coerce=int) hobby = core.SelectMultipleField(label="嗜好", choices=[(1, "小姐姐"), (2, "小萝莉"), (3, "小正太"), (4, "小哥哥")], coerce=int) sub = simple.SubmitField(label="登陆", render_kw={"class": "bs"})
class ProjectAddForm(form.Form): name = simple.StringField( label=u'名称', validators=[validators.DataRequired(message=u'名称不能为空')], render_kw={'class': 'form-control', 'placeholder': u'项目名称'} ) title = simple.StringField( label=u'描述', validators=[validators.DataRequired(message=u'描述不能为空')], render_kw={'class': 'form-control', 'placeholder': u'项目描述'} ) repository = simple.StringField( label=u'地址', validators=[validators.DataRequired(message=u'地址不能为空')], render_kw={'class': 'form-control', 'placeholder': u'项目地址'} ) hosts = core.SelectMultipleField( label=u'主机', choices=(), coerce=int, render_kw={'class': 'form-control'} ) def __init__(self, *args, **kwargs): super(ProjectAddForm, self).__init__(*args, **kwargs) self.hosts.choices = db.session.query(models.Host.id, models.Host.hostname).all()
class RegForm(Form): # 用户名 username = simple.StringField( label='用户名', # label标签 validators=[ # 校验规则 validators.data_required(message='数据不能为空'), validators.Length(min=5, max=16, message="用户名要在5-6个字符之间") ], render_kw={"class": 'user'} # input标签中的类 ) # 密码 pwd = simple.PasswordField( label='密码', # label标签 validators=[ # 校验规则 validators.data_required(message='数据不能为空'), validators.Length(min=5, max=16, message="用户名要在5-6个字符之间"), validators.Regexp( regex='^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{6,}$', message='最少6位,包括至少1个大写字母,1个小写字母,1个数字,不允许包含特殊字符') ], render_kw={"class": 'pwd'} # input标签中的类 ) # 确认密码 repwd = simple.PasswordField( label='密码', # label标签 validators=[ # 校验规则 validators.data_required(message='数据不能为空'), validators.EqualTo('pwd', message='两次密码不一致') ], render_kw={"class": 'repwd'} # input标签中的类 ) # 单选 gender = core.RadioField( label='性别', choices=((1, '女'), (2, '男')), coerce=int, # 选择字符串转化为int 默认为str default=2 # 默认选中 ) # 多选 hobby = core.SelectMultipleField( label='爱好', choices=[ [1, '西游记'], [2, '红楼梦'], ], coerce=int, default=[1, 2] # 默认 )
class WorkerForm(BaseForm): name = simple.StringField(label="节点名称", validators=[DataRequired()], render_kw={'class': 'form-control'}) remark = simple.StringField(label="备注", render_kw={ "placeholder": "可不填写。", 'class': 'form-control' }) config = core.SelectMultipleField(label='选择配置', render_kw={'class': 'form-control'}, coerce=int) def __init__(self, *args, **kwargs): from app.view_models.worker_view import worker_choices super(WorkerForm, self).__init__(*args, **kwargs) self.config.choices = worker_choices()
class RegisterForm(Form): name = simple.StringField( label='用户名', validators=[ validators.DataRequired() ], widget=widgets.TextInput(), render_kw={'class': 'form-control'}, default='alex' ) pwd = simple.PasswordField( label='密码', validators=[ validators.DataRequired(message='密码不能为空.') ], widget=widgets.PasswordInput(), render_kw={'class': 'form-control'} ) pwd_confirm = simple.PasswordField( label='重复密码', validators=[ validators.DataRequired(message='重复密码不能为空.'), validators.EqualTo('pwd', message="两次密码输入不一致") ], widget=widgets.PasswordInput(), render_kw={'class': 'form-control'} ) email = html5.EmailField( label='邮箱', validators=[ validators.DataRequired(message='邮箱不能为空.'), validators.Email(message='邮箱格式错误') ], widget=widgets.TextInput(input_type='email'), render_kw={'class': 'form-control'} ) gender = core.RadioField( label='性别', choices=( (1, '男'), (2, '女'), ), coerce=int ) city = core.SelectField( label='城市', choices=SQLHelper.fetch_all('select id,name from city',{},None), # choices=( # (1, '篮球'), # (2, '足球'), # ), coerce=int ) hobby = core.SelectMultipleField( label='爱好', choices=( (1, '篮球'), (2, '足球'), ), coerce=int ) favor = core.SelectMultipleField( label='喜好', choices=( (1, '篮球'), (2, '足球'), ), widget=widgets.ListWidget(prefix_label=False), option_widget=widgets.CheckboxInput(), coerce=int, default=[1, 2] ) def __init__(self, *args, **kwargs): super(RegisterForm, self).__init__(*args, **kwargs) self.city.choices = SQLHelper.fetch_all('select id,name from city',{},None) def validate_name(self, field): """ 自定义pwd_confirm字段规则,例:与pwd字段是否一致 :param field: :return: """ # 最开始初始化时,self.data中已经有所有的值 # print(field.data) # 当前name传过来的值 # print(self.data) # 当前传过来的所有的值:name,gender..... obj = SQLHelper.fetch_one('select id from users where name=%s',[field.data,]) if obj: raise validators.ValidationError("用户名已经存在") # 继续后续验证
class RegisterForm(Form): name = simple.StringField(label='用户名', validators=[validators.DataRequired()], widget=widgets.TextInput(), render_kw={'class': 'form-control'}, default='alex') pwd = simple.PasswordField( label='密码', validators=[validators.DataRequired(message='密码不能为空.')], widget=widgets.PasswordInput(), render_kw={'class': 'form-control'}) pwd_confirm = simple.PasswordField( label='重复密码', validators=[ validators.DataRequired(message='重复密码不能为空.'), validators.EqualTo('pwd', message="两次密码输入不一致") ], widget=widgets.PasswordInput(), render_kw={'class': 'form-control'}) email = html5.EmailField(label='邮箱', validators=[ validators.DataRequired(message='邮箱不能为空.'), validators.Email(message='邮箱格式错误') ], widget=widgets.TextInput(input_type='email'), render_kw={'class': 'form-control'}) gender = core.RadioField( label='性别', choices=( (1, '男'), (2, '女'), ), coerce=int # “1” “2” ) city = core.SelectField(label='城市', choices=( ('bj', '北京'), ('sh', '上海'), )) hobby = core.SelectMultipleField(label='爱好', choices=( (1, '篮球'), (2, '足球'), ), coerce=int) favor = core.SelectMultipleField( label='喜好', choices=( (1, '篮球'), (2, '足球'), ), widget=widgets.ListWidget(prefix_label=False), option_widget=widgets.CheckboxInput(), coerce=int, default=[1, 2]) def __init__(self, *args, **kwargs): super(RegisterForm, self).__init__(*args, **kwargs) self.favor.choices = ((1, '篮球'), (2, '足球'), (3, '羽毛球')) def validate_pwd_confirm(self, field): """ 自定义pwd_confirm字段规则,例:与pwd字段是否一致 :param field: :return: """ # 最开始初始化时,self.data中已经有所有的值 if field.data != self.data['pwd']: # raise validators.ValidationError("密码不一致") # 继续后续验证 raise validators.StopValidation("密码不一致") # 不再继续后续验证
class RegisterForm(Form): name = simple.StringField( label='用户名', validators=[validators.DataRequired(message="用户名不能为空")], widget=widgets.TextInput(), render_kw={'class': 'form-control'}, default='alex') pwd = simple.PasswordField( label='密码', validators=[validators.DataRequired(message='密码不能为空.')], widget=widgets.PasswordInput(), render_kw={'class': 'form-control'}) pwd_confirm = simple.PasswordField( label='重复密码', validators=[ validators.DataRequired(message='重复密码不能为空.'), validators.EqualTo('pwd', message="两次密码输入不一致") # 校验密码一致 ], widget=widgets.PasswordInput(), render_kw={'class': 'form-control'}) email = html5.EmailField(label='邮箱', validators=[ validators.DataRequired(message='邮箱不能为空.'), validators.Email(message='邮箱格式错误') ], widget=widgets.TextInput(input_type='email'), render_kw={'class': 'form-control'}) gender = core.RadioField( label='性别', choices=( (1, '男'), (2, '女'), ), coerce=int # int("1") 前端提交数据默认为字符串类型,coerce设置后端接收到后为int. ) city = core.SelectField(label='城市', choices=( ('bj', '北京'), ('sh', '上海'), )) hobby = core.SelectMultipleField(label='爱好', choices=( (1, '篮球'), (2, '足球'), ), coerce=int) favor = core.SelectMultipleField( label='喜好', choices=( (1, '篮球'), (2, '足球'), ), widget=widgets.ListWidget(prefix_label=False), option_widget=widgets.CheckboxInput(), coerce=int, default=[ 1, ])
class RegForm(Form): username = simple.StringField( label="用户名", validators=[ validators.DataRequired(message="不能为空"), validators.Length(min=3, max=5, message="不能小于3位,不能大于5位") ], # widget=widgets.TextInput(), render_kw={"class": "my_username"}) nickname = simple.StringField( label="昵称", validators=[ validators.DataRequired(message="不能为空"), ], # widget=widgets.TextInput(), render_kw={"class": "my_username"}) password = simple.PasswordField( label="密码", validators=[ validators.DataRequired(message="不能为空"), validators.Length(min=6, max=6, message="密码必须为6位"), validators.Regexp(regex="\d+", message="密码必须位数字"), ], # widget=widgets.TextInput(), render_kw={"class": "my_password"}) repassword = simple.PasswordField(label="重复密码", validators=[ validators.EqualTo( fieldname="password", message="两次密码不一致") ]) email = simple.StringField( label="昵称", validators=[ validators.Email(message="格式不正确"), ], # widget=widgets.TextInput(), render_kw={"class": "my_username"}) gender = core.RadioField(label="性别", coerce=int, choices=((1, "女"), (2, "男")), default=1) hobby = core.SelectMultipleField(label="爱好", coerce=int, choices=( (1, "小姐姐"), (2, "小萝莉"), (3, "小哥哥"), (4, "小正太"), (5, "阿姨"), (6, "大叔"), ), default=(1, 2, 5)) submit = simple.SubmitField(label="提交")
class RegisterForm(Form): name = simple.StringField(label="用户名", validators=[validators.DataRequired()], widget=widgets.TextInput(), render_kw={"class": "form-control"}, default="wd") pwd = simple.PasswordField( label="密码", validators=[validators.DataRequired(message="密码不能为空")]) pwd_confim = simple.PasswordField( label="重复密码", validators=[ validators.DataRequired(message='重复密码不能为空.'), validators.EqualTo('pwd', message="两次密码不一致") ], widget=widgets.PasswordInput(), render_kw={'class': 'form-control'}) # ========================html5============================ email = html5.EmailField( # 注意这里用的是html5.EmailField label='邮箱', validators=[ validators.DataRequired(message='邮箱不能为空.'), validators.Email(message='邮箱格式错误') ], widget=widgets.TextInput(input_type='email'), render_kw={'class': 'form-control'}) # ===================以下是用core来调用的======================= gender = core.RadioField( label="性别", choices=( (1, "男"), (1, "女"), ), coerce=int # 限制是int类型的 ) city = core.SelectField(label="城市", choices=( ("bj", "北京"), ("sh", "上海"), )) hobby = core.SelectMultipleField(label='爱好', choices=( (1, '篮球'), (2, '足球'), ), coerce=int) favor = core.SelectMultipleField( label="喜好", choices=( (1, '篮球'), (2, '足球'), ), widget=widgets.ListWidget(prefix_label=False), option_widget=widgets.CheckboxInput(), coerce=int, default=[1, 2]) def __init__(self, *args, **kwargs): # 这里的self是一个RegisterForm对象 '''重写__init__方法''' super(RegisterForm, self).__init__(*args, **kwargs) # 继承父类的init方法 self.favor.choices = ((1, '篮球'), (2, '足球'), (3, '羽毛球') ) # 把RegisterForm这个类里面的favor重新赋值,实现动态改变复选框中的选项 def validate_pwd_confim( self, field, ): ''' 自定义pwd_config字段规则,例:与pwd字段是否一致 :param field: :return: ''' # 最开始初始化时,self.data中已经有所有的值 if field.data != self.data['pwd']: # raise validators.ValidationError("密码不一致") # 继续后续验证 raise validators.StopValidation("密码不一致") # 不再继续后续验证
class RegFrom(Form): username = simple.StringField( label="账号", validators=[ validators.DataRequired(message="账号不能为空"), validators.Length(min=8, max=16, message="账号长度在8-16位之间") ], render_kw={"class": "my_username"} ) password = simple.PasswordField( label="密码", validators=[ validators.DataRequired(message="密码不能为空"), validators.Length(min=6, max=6, message="密码长度为6位"), validators.Regexp(regex='\d+', message="密码必须为数字") ], render_kw={"class": "my_password"} ) re_password = simple.PasswordField( label="确认密码", validators=[ validators.EqualTo(fieldname="password", message="两次密码不一致") ] ) email = simple.StringField( label="邮箱", validators=[ validators.Email(message="格式不正确") ], render_kw={"class": "my_email"} ) nickname = simple.StringField( label="昵称", validators=[ validators.DataRequired(message="密码不能为空"), ], render_kw={"class": "my_nickname"} ) gender = core.RadioField( label="性别", coerce=int, choices=( (1, "M"), (2, "F") ), default=1 ) hobby = core.SelectMultipleField( label="爱好", coerce=int, choices=( (1, "Apple"), (2, "Sumsung"), (3, "Mi"), (4, "Meizu"), (5, "Huawei"), (6, "Nubia") ), default=(1, 2, 3) )
class RegisterForm(Form): name = StringField( label='用户名', validators=[ validators.DataRequired() ], widget=widgets.TextInput(), render_kw={'class': 'models-control'}, default='用户名' #设置input标签中默认值 ) pwd = PasswordField( label='密码', validators=[ validators.DataRequired(message='密码不能为空.') ], widget=widgets.PasswordInput(), render_kw={'class': 'models-control'} ) pwd_confirm = PasswordField( #第二次输入密码 label='重复密码', validators=[ validators.DataRequired(message='重复密码不能为空.'), validators.EqualTo('pwd', message="两次密码输入不一致") #验证2次输入的密码是否一致? ], widget=widgets.PasswordInput(), render_kw={'class': 'models-control'} ) email = html5.EmailField( label='邮箱', validators=[ validators.DataRequired(message='邮箱不能为空.'), validators.Email(message='邮箱格式错误') ], widget=widgets.TextInput(input_type='email'), #生成email input标签 render_kw={'class': 'models-control'} ) gender = core.RadioField( label='性别', choices=( #choice radio选项 (1, '男'), (2, '女'), ), coerce=int #讲用户提交过来的 '4' 强制转成 int 4 ) city = core.SelectField( label='城市', choices=( ('bj', '北京'), ('sh', '上海'), ) ) hobby = core.SelectMultipleField( #select 下拉框多选框 label='爱好', choices=( (1, '篮球'), (2, '足球'), ), coerce=int ) favor = core.SelectMultipleField( label='喜好', choices=( (1, '篮球'), (2, '足球'), ), widget=widgets.ListWidget(prefix_label=False), #生成Checkbox 多选框 option_widget=widgets.CheckboxInput(), coerce=int, default=[1,2] ) def __init__(self, *args, **kwargs): #重写form验证类的__init__方法可以实时同步数据中数据 super(RegisterForm, self).__init__(*args, **kwargs) self.favor.choices = ((1, '篮球'), (2, '足球'), (3, '羽毛球')) self.city.choices=(('bj', '北京'), ('sh', '上海'), ('tj','天津')) def validate_pwd_confirm(self, field): #wtforms验证 钩子函数 """ 自定义pwd_confirm字段规则,例:与pwd字段是否一致 :param field: :return: """ # 最开始初始化时,self.data中已经有所有的值 if field.data != self.data['pwd']: # raise validators.ValidationError("密码不一致") # 继续后续验证 raise validators.StopValidation("密码不一致") # 不再继续后续验证
class RegisterForm(FlaskForm): username = simple.StringField( label="用户名", validators=[ validators.DataRequired( message="用户名不能为空") # 必填项检查 message 为返回的错误内容 ], widget=widgets.TextInput(), render_kw={"class": "form-control"}, default="wd") password = simple.PasswordField( label="密码", validators=[ validators.DataRequired(message="密码不能为空"), validators.length(6, 10, message='密码长度为6~10位'), # Regexp(r'') # 写正则 ]) pwd_confim = simple.PasswordField( label="重复密码", validators=[ validators.DataRequired(message='重复密码不能为空.'), validators.EqualTo('password', message="两次密码不一致") # 相等校验 ], widget=widgets.PasswordInput(), render_kw={'class': 'form-control'}) mail = html5.EmailField( # 注意这里用的是html5.EmailField label='邮箱', validators=[ validators.DataRequired(message='邮箱不能为空.'), validators.Email(message='邮箱格式错误') ], widget=widgets.TextInput(input_type='email'), render_kw={'class': 'form-control'}) gender = core.RadioField( label="性别", choices=( (1, "男"), (1, "女"), ), coerce=int # 限制是int类型的 ) city = core.SelectField(label="城市", choices=( ("bj", "北京"), ("sh", "上海"), )) hobby = core.SelectMultipleField(label='爱好', choices=( (1, '篮球'), (2, '足球'), ), coerce=int) favor = core.SelectMultipleField( label="喜好", choices=( (1, '篮球'), (2, '足球'), ), widget=widgets.ListWidget(prefix_label=False), option_widget=widgets.CheckboxInput(), coerce=int, default=[1, 2]) # submit = simple.SubmitField( # label="提交", # render_kw={ # "class": "btn btn-primary btn-block", # }, # ) def __init__(self, *args, **kwargs): # 动态更行字段的值(可以从数据库中查到数据并赋值) '''重写__init__方法''' super(RegisterForm, self).__init__(*args, **kwargs) self.favor.choices = ((1, '篮球'), (2, '足球'), (3, '羽毛球') ) # 把RegisterForm这个类里面的favor重新赋值,实现动态改变复选框中的选项