今天头针对form里的几个方法讲了不少东西,顿时茅塞顿开

1.form类的运行顺序是init,clean,validte,save
其中clean和validate会在form.is_valid()方法中被先后调用。(这里留有一个疑问,结构完全相同的两个form,但是一个为先验证后clean,另一个先clean后验证。原因不明。)
这里https://docs.djangoproject.com/en/dev/ref/forms/validation/给的是先验证后clean

2.cleaned_data中的值类型与字段定义的Field类型一致。
如果字段定义charfield,那么clean方法返回的cleaned_data中对应的字段值就是字符型,
定义为ModelChoiceField,则cleaned_data中字段值是某个model实例。
定义为ModelMultipleChoiceField,则cleaned_data中字段值是个model实例list。

3.clean等步骤遇到的异常:Exception Value: argument of type 'NoneType' is not iterable.
可能是cleaned_data中某个字段值应该是个列表,实际上却是空值。

4.ModelForm的Meta类中定义的fields
默认的Field是Model中定义的Field,如需更改,可在Form类内以同名字段覆盖,比如自定义widget和required属性等。
不管字段在form中怎么自定义,cleaned_data中对应的值都必须按照model中定义的字段类型取值,否则校验不通过或保存时报错。

暂时记这几条,form还可以重写init、save方法,并且可以自定义方法。如果对这几个东西不懂,想办法找例子读一遍就懂了。

※※※ clean方法重写时一定不要忘了return cleaned_data ※※※

补充:
5.form的四种初始化方式
①实例化oneform(initial={'onefield':value})
②定义字段时给初始化值oneformfield = forms.CharField(initial=value)
③重写Form类的__init__()方法:self.fields['onefield'].initial = value
④当给form传参instanse(即oneform(instanse=onemodel_instance))时,前三种初始化方法会全部失效,即使重写__init__时,先调用父类的__init__再使用方法③,仍然无效(不是很爽)。
这时想重新初始化字段值只能在__init__()里 self.initial['title'] = value,直接对Form类的initial属性字典赋值。

django form关于clean及cleaned_data的说明 以及4种初始化相关推荐

  1. python提交表单无效_使用Django Form解决表单数据无法动态刷新的两种方法

    一.无法动态更新数据的实例 1. 如下,数据库中创建了班级表和教师表,两张表的对应关系为"多对多" from django.db import models class Class ...

  2. Django Form和ModelForm组件

    Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...

  3. Django - Form和ModelForm

    一. form介绍 1.生成页面可用的HTML标签 2. 提供input可以提交数据 3. 对用户提交的数据进行校验 4. 保留上次输入内容 5. 提供错误信息 二. 普通方式书写注册功能 <! ...

  4. Python基础教程:一次性搞定 Django Form

    最近在项目上用到了 Django 的自带的 Form 表单,遇到了一些坑,今天给大家出的这篇Python基础教程也是做了一个简单的总结,大家可以对号出坑. Form 基础介绍 首先让我们先来了解下 D ...

  5. Django Form表单组件

    Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...

  6. 总结django form

    总结django form 一.django forms 1.特点 django forms是Django的表单处理库.依赖HttpRequest,它具有如下特点: (1)快速自动生成HTML表单: ...

  7. Django form模块使用心得

    http://forreal.blog.51cto.com/3205122/586035 最近用Django 写了一个网站,现在来分享一下对Django form 的一些心得. 一,创建一个表单 创建 ...

  8. django - form

    django - form 在对应的应用下新建一个 forms.py from django.forms import forms 编写一个类,继承 forms.Form form 表单的2个作用 生 ...

  9. 一篇文章浅析Django Form组件相关知识

    击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 灭烛怜光满,披衣觉露滋. 前言 在上 ...

  10. Django form表单

    Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...

最新文章

  1. ABAP的子程序参数注意点
  2. 设计模式——模板方法
  3. 外贸电商选择美国服务器的优势分析
  4. 用python让excel飞起来 pdf_能听会写的科大讯飞智能办公本,让工作效率瞬间翻番!丨试用...
  5. MySQL 下载与安装
  6. erlang 编译之 to_core
  7. 微信新的用户信息接口wx.getUserProfile,返回信息解密失败
  8. java桥_java 泛型--桥方法
  9. linux配置apache服务器项目文档,Apache(Linux)服务器配置文档.doc
  10. 将CSV文件存为HTML文件形式
  11. 工具| PocSuite 使用介绍
  12. java项目不要用反射_面试官:Java 反射是什么?我回答不上来!
  13. mongoddb常用增删改查命令--推荐查询命令:
  14. 项目开发中如何写说明文档
  15. SOC核心处理器单元解构分析
  16. java发送邮件-java工具类
  17. win10电脑插入U盘不显示U盘盘符怎么办?
  18. 天镜漏洞扫描报告HTML转Excel格式Python脚本
  19. gis坐标|度分秒与十进制转换公式
  20. springboot返回date类型的数据会慢8个小时解决方案

热门文章

  1. Adobe illustrator(AI) 矢量图形软件 | 图像描摹(怎么把白色背景色的图片背景变为透明色)
  2. 会议纪要模板----正式文档
  3. 基于PHP+MySQL的志愿者管理系统
  4. 基于随机森林算法的葡萄酒种类识别
  5. 计算机鼠标老跳动,鼠标跳动是什么原因 鼠标经常抖动的解决方法
  6. 第9章第18节:制作商业计划书的商业模式幻灯片 [PowerPoint精美幻灯片实战教程]
  7. 移动硬盘RAW格式,无法识别读取
  8. 可靠性评价类毕业论文文献都有哪些?
  9. 桌面版 Linux 为什么打不过 Windows?Linus 现身说法!
  10. String实现 intern