Django自定义校验,在 save 之前自动调用

摘要: 一直以来, 用 django 做应用的时候,总是习惯用 django models 里面配置的类型以及校验方式检查客户端输入的数据是否合法,

一直以来, 用 django 做应用的时候,总是习惯用 django models 里面配置的类型以及校验方式检查客户端输入的数据是否合法, 最常见的方法如下:

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()


这样就可以将空白字符串过滤掉,从而实现自定义的校验, 当然这只是一个很简单的例子,但如果是其他复杂的校验,同样也是如此, 可能会用正则表达式检查,或者自己写定制的逻辑检查,但实现的方式是一样的。

上一篇: 是否该祭奠死去的ZOPE, 曾经浪费了我一年的青春.
下一篇: spring mvc jackson 防止XSS 注入方法
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号