django获取cleaned_data属性失败

  cleaned_data属性是调用了clean()方法之后才有的,如果在表单验证中使用  clean_字段名  方式定义了某个字段清洗函数,那么django会优先调用这个函数,最后调用clean()函数,如下:

def clean_mobile(self):
  mobile = self.cleaned_data['mobile'] #这样子写有时会取不到cleaned_data属性值,原因定义自定义的清洗函数对某些字段进行清洗后,该字段将会从cleaned_data属性中删除
                         #从而导致在cleaned_data属性中取不到该字段的值

 

  调用清洗函数,其实质就是将表单类型转化为python数据类型,假如表单中有两个字段,分别是mobile,password,在表单类中定义了clean_mobile清洗字段mobile(即由clean_mobile()方法完成字段mobile由表单类型转化为python数据类型)。

  在表单数据清洗的过程中是先调用clean()方法在调用clean_mobile()方法,得到cleaned_data属性,该属性里有两个键,分别是mobile,password。由于自定义了清洗函数clean_mobile会覆盖clean()(即mobile字段由clean_mobile()方法负责清洗,完成表单类型到python数据类型的转换),而且也会从cleaned_data属性中删除该字段,即cleaned_data属性中只含有password这一个字段,可通过login_form.cleaned_data['password']取得这个值。data属性包含了表单的所有字段值即data属性里保存了mobile,password的值,如下:

 

正确示例:

       

 

       

 

  以上代码只是告诉读者可以使用data 属性取得表单数据。    也可以使用形如:register_post_form.password.value 的形式在前端获取表单数据。

  

  注:读者可使用断点方式查看表单对象含有的字段。

  django官方文档相关介绍:https://docs.djangoproject.com/zh-hans/3.0/ref/forms/validation/

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值