예제 #1
0
 class F(Form):
     search = html5.SearchField()
     telephone = html5.TelField()
     url = html5.URLField()
     email = html5.EmailField()
     datetime = html5.DateTimeField()
     date = html5.DateField()
     dt_local = html5.DateTimeLocalField()
     integer = html5.IntegerField()
     decimal = html5.DecimalField()
     int_range = html5.IntegerRangeField()
     decimal_range = html5.DecimalRangeField()
예제 #2
0
class Formulario(flask_wtf.FlaskForm):
    """Pide el padrón y la dirección de correo.
    """
    padron = fields.StringField(
        "Padrón", validators=[
            validators.Regexp(r"\w+", message="Ingrese un padrón válido")])

    email = html5.EmailField(
        "E-mail", validators=[
            validators.Email(message="Ingrese una dirección de e-mail válida")])

    submit = fields.SubmitField("Obtener enlace")
예제 #3
0
class RegisterForm(Form):
    username = simple.StringField(
        label='用户名',
        validators=[
            validators.DataRequired(message='用户名不能为空'),
            validators.Length(min=3,
                              max=18,
                              message='用户名长度必须大于%(min)d, 并且小于%(max)d'),
        ],
        widget=widgets.TextInput(),
        render_kw={'class': 'form-control'})
    pwd = simple.PasswordField(
        label='用户密码',
        validators=[
            validators.DataRequired(message='用户密码不能为空'),
            validators.Length(min=6,
                              max=18,
                              message='用户密码的长度必须大于6位字符并且小于18位字符'),
            validators.Regexp(
                regex='^(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[_]){6,18}',
                message='用户密码至少包'
                '含一个字母一个数字以及一个下划线')
        ],
        widget=widgets.PasswordInput(),
        render_kw={'class': 'form-control'},
    )
    re_pwd = simple.PasswordField(
        label='重复密码',
        validators=[
            validators.DataRequired(message='重复密码不能为空'),
            validators.EqualTo('pwd', '两次密码输入不一致')
        ],
        widget=widgets.PasswordInput(),
        render_kw={'class': 'control'},
    )
    email = html5.EmailField(
        label='邮箱',
        validators=[
            validators.DataRequired(message='邮箱不能为空'),
            validators.Email(message='邮箱格式错误')
        ],
        widget=widgets.TextInput(input_type='email'),
        render_kw={'class': 'form-control'},
    )

    def __init__(self, *args, **kwargs):
        super(RegisterForm, self).__init__(*args, **kwargs)

    def validate_pwd_confirm(self, field):
        if field.data != self.data['pwd']:
            # raise validators.ValidationError("密码不一致")  继续后续验证
            raise validators.StopValidation('密码不一致')  # 不再继续验证
예제 #4
0
파일: forms.py 프로젝트: hasibomi/netflikz
class FormSignUp(Form):
    email = html5.EmailField(validators=[
        validators.InputRequired(),
        validators.Email(message="Email is required")
    ])
    password = fields.PasswordField(validators=[
        validators.InputRequired(message="Password is required"),
        validators.EqualTo("password_confirmation",
                           message="Passwords must match")
    ])
    password_confirmation = fields.PasswordField(validators=[
        validators.InputRequired(message="Password confirmation is required")
    ])
예제 #5
0
파일: app11.py 프로젝트: dteer/flask_study
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': 'from-control'},
    )

    gender = core.RadioField(
        label='性别',
        choices=(
            (1, '男'),
            (2, '女'),
        ),

        coerce=int,
        default=[1, ],
    )
class RegistrationForm(Form):
    username = StringField(
        # Use of render keywords for html data found at
        # https://pythonpedia.com/en/knowledge-base/20440056/custom-attributes-for
        # -flask-wtforms
        "Username",
        validators=[InputRequired(), Length(max=20, min=4)],
        render_kw={
            "class": "form-control",
            "aria-describedby": "usernameLabel",
            "minlength": "4",
            "maxlength": "20",
            "placeholder": "Enter username"
        })
    password = PasswordField("Password",
                             validators=[
                                 InputRequired(),
                                 Length(min=10),
                                 EqualTo("confirm_password",
                                         message="Passwords must match")
                             ],
                             render_kw={
                                 "class": "form-control",
                                 "aria-describedby": "passwordLabel",
                                 "minlength": "10",
                                 "placeholder": "Password"
                             })
    confirm_password = PasswordField("Repeat Password",
                                     validators=[InputRequired()],
                                     render_kw={
                                         "class": "form-control",
                                         "aria-describedby": "confirmLabel",
                                         "placeholder": "Confirm Password"
                                     })
    email = html5.EmailField(
        "Email",
        validators=[
            InputRequired(),
            Email(message="This field requires a valid email")
        ],
        render_kw={
            "class": "form-control",
            "aria-describedby": "emailLabel",
            "placeholder": "Email Address"
        })
    agree = BooleanField("I agree to the terms and conditions of this site.",
                         validators=[InputRequired()],
                         render_kw={"class": "form-check-input"})
예제 #7
0
    class ConfirmEmailForm(Form):
        email = html5.EmailField('email', validators=[validators.Required()])
        random_code = fields.StringField('random_code',
                                         validators=[validators.Required()])

        def validate_random_code(self, field):
            et = self.email_temp
            if not et:
                raise ValidationError('非法的验证请求')

        @locked_cached_property
        def email_temp(self):
            return (EmailTempModel.query.filter(
                EmailTempModel.email_insensitive == self.email.data).filter(
                    EmailTempModel.random_code ==
                    self.random_code.data).first())
예제 #8
0
class InditeForm(FlaskForm):
    mail = html5.EmailField('E-mail Putting Please', validators=[Email(),Required()])
    title = StringField('Artical title',validators=[Required()])
    abstruct = TextAreaField('Artical in brief',validators=[Required()])
    artical_file = FileField('Artical in PDF please',validators=[Required(), FileAllowed(['pdf'], 'PDF only!'),FileRequired()])
    # subselect = SelectField(label='choose a subject',validators=[Required()],choices=[(1, 'test1'), (2, 'test2')],coerce=int)
    def query_subject():
        return [r.name for r in db.session.query(Subject).all()]
    def query_theme():
        return [r.name for r in db.session.query(Theme).all()]
    
    def get_pk(obj):
        return obj
    # theme = QuerySelectField(label=' theme select ',validators=[Required()],query_factory=query_factory,get_pk=get_pk)
    subselect = QuerySelectField(label='choose a subject',validators=[Required()],query_factory=query_subject,get_pk=get_pk)
    themeselect = QuerySelectMultipleField(label='choose themes u like PRESS CTRL + LEFT MOUSE to select many',query_factory=query_theme,get_pk=get_pk)
    submit = SubmitField('submit')
예제 #9
0
    class LoginForm(RSAPasswordForm):
        email = html5.EmailField('邮箱',
                                 description='输入邮箱',
                                 validators=[validators.Required()])

        def validate(self):
            super(LoginForm, self).validate()  # noqa
            if not self.user:
                raise ValidationError('邮箱不存在')
            if self.user.password_hash != self.password_hash:
                raise ValidationError('密码错误')

        @locked_cached_property
        def user(self):
            email = self.email.data
            user = (UserModel.query.filter(
                UserModel.email_insensitive == email).first())
            return user
예제 #10
0
파일: forms.py 프로젝트: ghoulmann/parking
class ApplicationForm(FlaskForm):


    #identity
    full_name = StringField('Full Name', validators=[validators.DataRequired()])

    email = more_fields.EmailField('Email Address', validators=[validators.DataRequired(), validators.Email()])

    # Requirements
    license = BooleanField('Licensed Driver')
    insurance = BooleanField('Insured')
    l_plate = StringField('License Plate')
    state = BooleanField('Registration State')
    consent = BooleanField('Parent/Guardian Written Consent')
    grade = SelectField(choices=[(9,'9th'), (10,'10th'), (11, '11th'), (12, '12th')])

    # vehicle
    make = StringField('Vehicle Manufacturer')
    model = StringField('Model')
    year = StringField('Vehicle Year')

    # eligibility
    internship = BooleanField('Internship')
    d_enrollment = BooleanField('Dual Enrollment')
    service = BooleanField('Community Service')
    job = BooleanField('Weekday Work Hours')
    athletics_carpool = BooleanField('Team Carpool Host')
    athletics_captain = BooleanField('Athletic Captian')
    athletics = BooleanField('Seasonal Athlete')
    extracurricular = BooleanField('extracurricular Activities')
    sga = BooleanField('Student Government')
    media_production = BooleanField('Media Production')
    gpa = BooleanField('GPA Advantage')
    distance = BooleanField('Prohibitive Commute')
    weekday_job = BooleanField('weekday_job')
    attendance = BooleanField('Attendance Advantage')
    narrative = StringField('Explanation', widget=TextArea(), validators=[validators.DataRequired()])
    timestamp = DateTimeField('',widget=HiddenInput())




    submit = SubmitField('Submit')
예제 #11
0
class RegisterForm(Form):
    username = simple.StringField(
        validators=[validators.DataRequired(message='用户名不能为空.')],
        widget=widgets.TextInput(),
    )
    password = simple.PasswordField(
        validators=[
            validators.DataRequired(message='密码不能为空.'),
            validators.Length(min=8, message='密码长度必须大于%(min)d'),
        ],
        widget=widgets.PasswordInput(),
    )
    email = html5.EmailField(
        label='邮箱',
        validators=[
            validators.DataRequired(message='邮箱不能为空.'),
            validators.Email(message='邮箱格式错误')
        ],
        widget=widgets.TextInput(input_type='email'),
    )
예제 #12
0
class CadastroCliente(FlaskForm):
    nome = StringField('Seu Nome', [InputRequired('Nome é Obrigatório')])
    cidade = StringField('Sua Cidade', validators=[
                         InputRequired('Cidade é Obrigatório')])
    cep = StringField('Seu Cep', validators=[InputRequired('Cep é Obritório')])
    numero = html5.IntegerField('Número', widget=h5widgets.NumberInput(
        min=0), validators=[InputRequired('Número é Obrigatório')])
    bairro = StringField('Seu Bairro', validators=[
                         InputRequired('Bairro é Obrigatório')])
    rua = StringField('Sua rua', validators=[
                      InputRequired('Rua é Obrigatório')])
    email = html5.EmailField(
        'Seu e-mail', validators=[InputRequired('E-mail é Obrigatório')])
    telefone = StringField('Seu telefone', validators=[
                           InputRequired('Telefone é Obrigatório')])
    login = StringField('Seu Login', validators=[
                        InputRequired('Login é Obrigatório')])
    password = PasswordField('Sua Senha', validators=[
                             InputRequired('Senha é Obrigatória')])
    confirmPassword = PasswordField('Confirme a senha', validators=[
                                    InputRequired('Confirmação é Obrigatório')])
    receberEmail = BooleanField('Receber Email')
예제 #13
0
 class UF(Form):
     email = wtforms_html5.EmailField('Email',
         default=user and user.email or None,
         validators=[
             validators.DataRequired(),
             validators.Email(),
             _validate_user_does_not_exist(
                 exclude=user and user.email or None)])
     password1 = wtforms.PasswordField('New password',
         validators = [
             not user and validators.Required() or validators.Optional(),
             validators.Length(min=10,
                 message=lazy_gettext('Password should be at least 10 characters long.'))])
     password2 = wtforms.PasswordField('Repeat password',
         validators = [
             validators.EqualTo('password1',
                 message=lazy_gettext("Passwords didn't match."))])
     # Note: by default, a new user is active
     active = wtforms.BooleanField('Active',default=not user or user.active,
         validators=(user and user.id==current_user.id and \
             [validate_checked(message=lazy_gettext("You can't deactivate yourself."))] or \
             []))
예제 #14
0
class Edit_Form(FlaskForm):
    '''

    Edit the new account for the employee

    '''
    id = IntegerField("Id",
                      validators=[DataRequired(),
                                  Length(1, 20)],
                      render_kw={'readonly': True})

    username = StringField('Username',
                           validators=[DataRequired(),
                                       Length(1, 20)],
                           render_kw={"placeholder": "User Name/ Work Number"})

    password = StringField('Password',
                           validators=[DataRequired(),
                                       Length(6, 20)],
                           render_kw={"placeholder": "Password"})

    email = html5.EmailField('Email',
                             validators=[DataRequired(),
                                         Email()],
                             render_kw={"placeholder": "Email Address"})

    name = StringField('Full Name',
                       validators=[DataRequired()],
                       render_kw={"placeholder": "Name"})

    # role = StringField('Role', validators=[DataRequired(), Length(1, 20)])

    role = SelectField('Role',
                       choices=[('1', 'Waiter'), ('2', 'Host'),
                                ('3', 'Kitchen'), ('4', 'Busboy'),
                                ('5', 'Manager')])

    edit = SubmitField('Edit')
예제 #15
0
class RegisterForm(Form):
    username = simple.StringField(
        label='用户名',
        validators=[
            validators.DataRequired()
        ],
        widget=widgets.TextInput(),
        render_kw={'class': 'form-control', 'placeholder':'用户名'},
    )

    pwd = simple.PasswordField(
        label='密码',
        validators=[
            validators.DataRequired(message='密码不能为空.')
        ],
        widget=widgets.PasswordInput(),
        render_kw={'class': 'form-control', 'placeholder':'密码'}
    )

    pwd_confirm = simple.PasswordField(
        label='重复密码',
        validators=[
            validators.DataRequired(message='重复密码不能为空.'),
            validators.EqualTo('pwd', message="两次密码输入不一致")
        ],
        widget=widgets.PasswordInput(),
        render_kw={'class': 'form-control', 'placeholder':'确认密码'}
    )

    email = html5.EmailField(
        label='邮箱',
        validators=[
            validators.DataRequired(message='邮箱不能为空.'),
            validators.Email(message='邮箱格式错误')
        ],
        widget=widgets.TextInput(input_type='email'),
        render_kw={'class': 'form-control', 'placeholder':'邮箱'}
    )
예제 #16
0
class Add_Form(FlaskForm):
    '''

    Creat the new account for the employee

    '''
    username = StringField('Username',
                           validators=[DataRequired(),
                                       Length(1, 20)],
                           render_kw={"placeholder": "User Name/ Work Number"})

    password = PasswordField('Password',
                             validators=[DataRequired(),
                                         Length(6, 20)],
                             render_kw={"placeholder": "Password"})

    password1 = PasswordField(
        'Confirm Password',
        validators=[DataRequired(),
                    Length(6, 20),
                    EqualTo('password')],
        render_kw={"placeholder": "Confirm Password"})

    email = html5.EmailField('Email',
                             validators=[DataRequired(),
                                         Email()],
                             render_kw={"placeholder": "Email Address"})

    name = StringField('Full Name',
                       validators=[DataRequired()],
                       render_kw={"placeholder": "Name"})

    role = SelectField('Role',
                       choices=[('1', 'Waiter'), ('2', 'Host'),
                                ('3', 'Kitchen'), ('4', 'Busboy'),
                                ('5', 'Manager')])

    add_user = SubmitField('Add')
예제 #17
0
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("密码不一致")  # 不再继续后续验证
예제 #18
0
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,
        ])
예제 #19
0
파일: exampl2.py 프로젝트: 1751660300/Flask
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("密码不一致")  # 不再继续后续验证
예제 #20
0
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重新赋值,实现动态改变复选框中的选项
예제 #21
0
class RegistrationForm(FlaskForm):
    email = html5.EmailField('註冊電郵地址*:', validators=[DataRequired(), Email()])
    username = StringField('會員名稱*:', validators=[DataRequired()])
    gender = RadioField('性別*:',
                        choices=[("Male", "男"), ("Female", "女")],
                        default="Male",
                        coerce=str)
    phoneNumber = StringField('聯絡電話:')
    year = SelectField(choices=[(0, '年份'), (2020, '2020'), (2019, '2019'),
                                (2018, '2018'), (2017, '2017'), (2016, '2016'),
                                (2015, '2015'), (2014, '2014'), (2013, '2013'),
                                (2012, '2012'), (2011, '2011'), (2010, '2010'),
                                (2009, '2009'), (2008, '2008'), (2007, '2007'),
                                (2006, '2006'), (2005, '2005'), (2004, '2004'),
                                (2003, '2003'), (2002, '2002'), (2001, '2001'),
                                (2000, '2000'), (1999, '1999'), (1998, '1998'),
                                (1997, '1997'), (1996, '1996'), (1995, '1995'),
                                (1994, '1994'), (1993, '1993'), (1992, '1992'),
                                (1991, '1991'), (1990, '1990'), (1989, '1989'),
                                (1988, '1988'), (1987, '1987'), (1986, '1986'),
                                (1985, '1985'), (1984, '1984'), (1983, '1983'),
                                (1982, '1982'), (1981, '1981'), (1980, '1980'),
                                (1979, '1979'), (1978, '1978'), (1977, '1977'),
                                (1976, '1976'), (1975, '1975'), (1974, '1974'),
                                (1973, '1973'), (1972, '1972'), (1971, '1971'),
                                (1970, '1970'), (1969, '1969'), (1968, '1968'),
                                (1967, '1967'), (1966, '1966'), (1965, '1965'),
                                (1964, '1964'), (1963, '1963'), (1962, '1962'),
                                (1961, '1961'), (1960, '1960'), (1959, '1959'),
                                (1958, '1958'), (1957, '1957'), (1956, '1956'),
                                (1955, '1955'), (1954, '1954'), (1953, '1953'),
                                (1952, '1952'), (1951, '1951'), (1950, '1950'),
                                (1949, '1949'), (1948, '1948'), (1947, '1947'),
                                (1946, '1946'), (1945, '1945'), (1944, '1944'),
                                (1943, '1943'), (1942, '1942'), (1941, '1941'),
                                (1940, '1940'), (1939, '1939'), (1938, '1938'),
                                (1937, '1937'), (1936, '1936'), (1935, '1935'),
                                (1934, '1934'), (1933, '1933'), (1932, '1932'),
                                (1931, '1931'), (1930, '1930'), (1929, '1929'),
                                (1928, '1928'), (1927, '1927'), (1926, '1926'),
                                (1925, '1925'), (1924, '1924'), (1923, '1923'),
                                (1922, '1922'), (1921, '1921'),
                                (1920, '1920')],
                       coerce=int)
    month = SelectField(choices=[(0, '月份'), (1, '1'), (2, '2'), (3, '3'),
                                 (4, '4'), (5, '5'), (6, '6'), (7, '7'),
                                 (8, '8'), (9, '9'), (10, '10'), (11, '11'),
                                 (12, '12')],
                        coerce=int,
                        default='',
                        validators=[DataRequired()])
    day = SelectField(choices=[(0, '日期'), (1, '1'), (2, '2'), (3, '3'),
                               (4, '4'), (5, '5'), (6, '6'), (7, '7'),
                               (8, '8'), (9, '9'), (10, '10'), (11, '11'),
                               (12, '12'), (13, '13'), (14, '14'), (15, '15'),
                               (16, '16'), (17, '17'), (18, '18'), (19, '19'),
                               (20, '20'), (21, '21'), (22, '22'), (23, '23'),
                               (24, '24'), (25, '25'), (26, '26'), (27, '27'),
                               (28, '28'), (29, '29'), (30, '30'), (31, '31')],
                      coerce=int,
                      default='',
                      validators=[DataRequired()])
    educationLevel = SelectField('教育程度:',
                                 choices=[('', '請選擇'), ('中四或以下', '中四或以下'),
                                          ('中五至中七或DSE', '中五至中七或DSE'),
                                          ('文憑或證書課程', '文憑或證書課程'),
                                          ('高級文憑或副學士', '高級文憑或副學士'),
                                          ('學士', '學士'), ('碩士或以上', '碩士或以上')],
                                 default='')
    income = SelectField('每月收入:',
                         choices=[('', '請選擇'), ('$10,000 或以下', '$10,000 或以下'),
                                  ('$10,001 - $20,000', '$10,001 - $20,000'),
                                  ('$20,001 - $30,000', '$20,001 - $30,000'),
                                  ('$30,001 - $40,000', '$30,001 - $40,000'),
                                  ('$40,001 - $50,000', '$40,001 - $50,000'),
                                  ('$50,001 - $60,000', '$50,001 - $60,000'),
                                  ('$60,001 或以上', '$60,001 或以上')])
    usergroup = SelectField(choices=[('admin', 'admin'), ('author', 'author'),
                                     ('normalUser', 'normalUser')],
                            default='normalUser')
    password = PasswordField('設定密碼*:', validators=[DataRequired()])
    password2 = PasswordField(
        '再輸入密碼*:',
        validators=[DataRequired(),
                    EqualTo('password', message='確認密碼不一致')])
    getinfo = BooleanField('本人同意收取香港經濟日報集團所發出的推廣資訊', default=True)
    submit = SubmitField('註冊')

    def validate_username(self, username):
        users = user.query.filter_by(username=username.data).first()
        if users is not None:
            raise ValidationError('用戶名稱已被使用')

    def validate_email(self, email):
        users = user.query.filter_by(email=email.data).first()
        if users is not None:
            raise ValidationError('電郵地址已被註冊')
예제 #22
0
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 UploadForm(FlaskForm):
    email = html5.EmailField("email", [validators.InputRequired()])
    audio_file = flask_wtf.file.FileField("Audio File",
                                          [flask_wtf.file.FileRequired])
예제 #24
0
class MailForm(FlaskForm):
    mail = html5.EmailField('E-mail Putting Please', validators=[Email(),Required()])
    submit = SubmitField('submit')
예제 #25
0
class CommentForm(FlaskForm):
    mail = html5.EmailField('E-mail Putting Please', validators=[Email(),Required()]) 
    comment = TextAreaField('comment in brief',validators=[Required()])
    verify_code = StringField('VerifyCode', validators=[Required()])
    submit = SubmitField('submit')
예제 #26
0
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("用户名已经存在") # 继续后续验证
예제 #27
0
class CreatePaypalPaymentForm(CreatePaymentForm):

    paypal_email = html5.EmailField('PayPal E-mail')

    submit = SubmitField('Pay Now')