sss

Posted oyoui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sss相关的知识,希望对你有一定的参考价值。

 

1. is_valid如果返回值如果为真 证明验证成功 意味着self.is_bound为True 和 self.errors为False
 
    def is_valid(self):
        return self.is_bound and not self.errors
 
        1).那么self.is_bound什么时候为真呢? 通过源码发现只有当实例化带参数的值时 self.is_bound 才为真 默认会把传入的值赋值给data data有值时 self.is_bound为真
        2).那么self.errors什么时候为假呢?  请看下面
 
2. 类初始化时候self._errors为None  所以此时会执行 self.full_clean()
 
    @property
    def errors(self):
         
        if self._errors is None:
            self.full_clean()
        return self._errors
 
 
3. 这部分代码的 最后生成 self.cleaned_data = {} 然后分别执行底下三个方法
 
    def full_clean(self):
 
        self._errors = ErrorDict()
 
        # 当用户提交数据时self.is_bound为真  not Ture代为为假  所以这部分不执行
        if not self.is_bound: 
            return
 
        # 创建一个 {}
        self.cleaned_data = {}
 
        if self.empty_permitted and not self.has_changed():
            return
         
        # 循环验证字段和字段对应的值 和钩子函数 如果验证成功 把字段和字段对应的值加入到self.cleand_data里面 错误会加入到self.errors里面
        self._clean_fields()
 
        # 执行self.clean()函数 默认返回self.cleaned_data  可以在子类中子定义self.clean() 方法
        self._clean_form()
 
        self._post_clean()
 
4.  循环类里面的字段 如果验证成功 将字段名和值 加入self.cleaned_data  例如: self.cleaned_data = {username: alex}
    接着会找clean_字段名 的钩子函数,如果有此函数例如clean_username(),会执行此函数,并把结果覆盖 self.cleaned_data = {username: 结果}
    当循环完 username 会循环 password
 
    def _clean_fields(self):
        for name, field in self.fields.items():
            if field.disabled:
                value = self.get_initial_for_field(field, name)
            else:
                value = field.widget.value_from_datadict(self.data, self.files, self.add_prefix(name))
            try:
                if isinstance(field, FileField):
                    initial = self.get_initial_for_field(field, name)
                    value = field.clean(value, initial)
                else:
                    value = field.clean(value)
 
                # 将name和value增加到 self.cleaned_data 字典里面
                self.cleaned_data[name] = value
 
                # 判断有没有 clean_字段 的函数 如果有 会覆盖上面self.cleaned_data对应的值
                if hasattr(self, clean_%s % name):
                    value = getattr(self, clean_%s % name)()
                    self.cleaned_data[name] = value
            except ValidationError as e:
                # 如果验证错误 会把错误信息 加入到self.errors里面
                self.add_error(name, e)

 

以上是关于sss的主要内容,如果未能解决你的问题,请参考以下文章

引擎十一:体积感SSS,SSR

台湾SSS鑫创SSS1700替代Cmedia CM6533 24bit 96KHZ USB音频编解码芯片

sql server 2005新建登录名失败,错误码15247.

vue里操作DOM

鑫创SSS1530/USB Typec音频声卡芯片方案设计参考资料

SSS1530用于TYPE-C耳机 Lingting耳机方案 线控耳机方案