IntegerField,StringField 本身只是Field类,就是字段,不会真的验证 参数是不是这个类型的····

来源:5-1 重写WTForms 一

老卢123123

2018-09-12

class ClientForm(Form):
    account = StringField(validators=[DataRequired(),length(
        min=5, max=32
    )])
    secret = StringField()
    type = IntegerField(validators=[DataRequired()])

    def validate_type(self, value):
        try:
            client = ClientTypeEnum(value.data)
        except ValueError as e:
            raise e
        self.type.data = client

在这里,比如

type = IntegerField(validators=[DataRequired()])

接收到参数的时候,并不会验证到底是不是Integer还是字符串的…

{"type":"就算填写汉字也可以通过验证,不是非数字不可的"}

form = ClientForm().validate_for_api()

所以,目前这门课程里,所有的form表单,如果没有单独写验证器的话,其实压根就没有验证参数类型

如果不能做为验证的话?这个问题怎么解决?

type = IntegerField(validators=[DataRequired()])

type = StringField(validators=[DataRequired()])

岂不是毫无区别~

求教!

写回答

2回答

russellxu

2018-10-09

这个当然是有区别的了。你如果用StringField实例化,那么参数传入INT的话是会抛出异常的

0
0

7七月

2018-09-12

内置验证器或者自定义验证器不都可以么。这是什么问题。。。。

0
0

Python Flask高级编程之RESTFul API前后端分离精讲

RESTFul+权限管理+token令牌+扩展flask=提升编程思维

2037 学习 · 359 问题

查看课程