clean_data 和普通数据有啥区别? - django

Posted

技术标签:

【中文标题】clean_data 和普通数据有啥区别? - django【英文标题】:what's the difference between cleaned_data and normal data? - djangoclean_data 和普通数据有什么区别? - django 【发布时间】:2017-06-04 23:55:13 【问题描述】:

如标题中所述...有什么区别? 我看到人们一直在说使用cleaned_data,在视频中人们仍然这么说,但只是说它会清理数据,但是当我使用 print 时

    print form.cleaned_data.get('title')
    print request.POST.get('title')

不过我看不出有什么不同。起初我以为是那些字符逃逸等,但经过测试,似乎并非如此。

这实际上是首选方式,因为似乎没有差异?

【问题讨论】:

【参考方案1】:

您不能信任请求数据,因为它是未经验证的原始数据。您永远不应该使用来自request 的数据并将其存储到您的数据库中。

为了应用程序的顺利运行,您只在数据库中存储有效数据非常重要。 Django 表单cleaned_data 确保您满足或不满足为该表单定义的验证规则。 form.is_valid() 检查您对request.POST 数据的所有验证,并生成包含form.cleaned_data 的有效数据的字典。 所以从forms.cleaned_data 属性中检索到的数据要经过表单验证。这不仅是验证,还可以将数据转换为相关的python类型。

您也可以参考link 了解 Django 表单如何执行验证。

【讨论】:

根据相关的python类型,是指我们在模型中设置的任何字段? 是的。表单的<field>_clean方法保证返回的是python对象,而不是表单中提交的原始字符串。 对不起,我又多了一个问题,不知何故,如果我们不使用基于 django 的表单,所以不能使用 form.is_valid() 会这样吗? request.data.cleaned_data.get('email') 没有。您必须知道cleaned_data 是django.forms.Form 的属性,您不能写request.data.cleaned_data,它将引发AttributeError 是否有其他方法可以在不使用cleaned_data 属性的情况下清理数据?

以上是关于clean_data 和普通数据有啥区别? - django的主要内容,如果未能解决你的问题,请参考以下文章

实时数据库和“普通”数据库有啥区别?

PipelinedRDD和普通RDD有啥区别?

POJO(普通旧 Java 对象)和 DTO(数据传输对象)有啥区别?

硬盘HD0与HD1有啥区别

tap社区版和普通版有啥区别

UFQFPN和QFPN封装有啥区别?