Django自定义校验,在 save 之前自动调用
By:Roy.LiuLast updated:2014-01-26
一直以来, 用 django 做应用的时候,总是习惯用 django models 里面配置的类型以及校验方式检查客户端输入的数据是否合法, 最常见的方法如下:
这是自己给定值的情况, 但如果employee 的名称name 是从页面上传过来的, 并且在客户端用空白字符串作为name, 在这种情况下结果页是通过校验的, 事实上这是完全不允许的。这里就需要自定义校验来检查空白字符串了, 例子如下:
这样就可以将空白字符串过滤掉,从而实现自定义的校验, 当然这只是一个很简单的例子,但如果是其他复杂的校验,同样也是如此, 可能会用正则表达式检查,或者自己写定制的逻辑检查,但实现的方式是一样的。
class Employee(models.Model): name = models.CharField(blank=False, max_length=100) .... 在view 中保存时是这样的: emp = Employee() emp.name = 'yihaomen' emp.full_clean() # validation here. emp.save()
这是自己给定值的情况, 但如果employee 的名称name 是从页面上传过来的, 并且在客户端用空白字符串作为name, 在这种情况下结果页是通过校验的, 事实上这是完全不允许的。这里就需要自定义校验来检查空白字符串了, 例子如下:
class Employee(models.Model): name = models.CharField(blank=False, max_length=100) .... def clean(self): """ Custom validation """ if self.name: self.name = self.name.strip()
这样就可以将空白字符串过滤掉,从而实现自定义的校验, 当然这只是一个很简单的例子,但如果是其他复杂的校验,同样也是如此, 可能会用正则表达式检查,或者自己写定制的逻辑检查,但实现的方式是一样的。
From:一号门
Previous:是否该祭奠死去的ZOPE, 曾经浪费了我一年的青春.
COMMENTS