zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    九月二十日
    九月十九日
    九月十八日
    九月十七日
    九月十六日
    大三第一周学习后的感悟及本学期计划
    阅读笔记09梦断代码
    阅读笔记08-梦断代码
    对搜狗现如今的用法进行评述
    寻找水王
  • 原文地址:https://www.cnblogs.com/xiaohaodeboke/p/12757934.html
Copyright © 2011-2022 走看看