Django表单Form类对空值None的替换
最近在写项目的时候用到Form,发现这个类什么都好,就是有些空值的默认赋值真是很不合我胃口。
查阅资料、官方文档后发现并没有设置该值的方式。于是,便开始了我的踩坑之路......
不过现在完美解决了,方法也挺简单的。
简单的说:建一个基础类,重载form.Forms的clean函数。
下边给出例子:
class BaseForm(forms.Form):
# 重载clean方法
def clean(self):
# 遍历字典
cleaned_data = {}
for key, value in self.cleaned_data.items():
if value == None:
cleaned_data[key] = self.fields[key].initial
else:
cleaned_data[key] = value
return cleaned_data
这里我选择将他的值设置为Field中的initial属性的值,便于我维护。
具体的Form类继承BaseForm类即可。
如:
class NewForm(BaseForm):
name = forms.CharField(label='名称')
age = form.IntegerField(
label='年龄',
required=False
)
测试数据为:
name=test&age=
age的值为空,此时如果继承的form.Form类,那么cleaned_data的值为:
{'name': 'test', 'age': None}
这是我不愿看到的结果,虽然部分Field存在empty_value属性可以设置,不过目前IntegerField字段并没有该属性值,使用本文方法即可将None值修改为自己定义的initial属性的值。
如果本文对你有帮助,记得点几下顶,让更多的人看见哟。
Django表单Form类对空值None的替换的更多相关文章
- Django表单介绍
HTML 表单 在HTML中,表单是<form>...</form> 之间元素的集合,它们允许访问者输入文本.选择选项.操作对象和控制等等,然后将信息发送回服务器. 某些表单的 ...
- Part 4:表单和类视图--Django从入门到精通系列教程
该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址. Python及Django学习QQ群:453 ...
- 六、Django之表单和类视图-Part 4
一.表单form 为了接收用户的投票选择,我们需要在前端页面显示一个投票界面.让我们重写先前的polls/detail.html文件,代码如下: <h1>{{ question.quest ...
- 第一个Django应用 - 第四部分:表单和类视图
一.表单form 为了接收用户的投票选择,我们需要在前端页面显示一个投票界面.让我们重写先前的polls/detail.html文件,代码如下: <h1>{{ question.quest ...
- django 表单系统 之 forms.Form
继承forms.Form实现django表单系统 参考: https://www.cnblogs.com/zongfa/p/7709639.html https://www.cnblogs.com/c ...
- 第四章:Django表单 - 3:Django表单字段汇总
Field.clean(value)[source] 虽然表单字段的Field类主要使用在Form类中,但也可以直接实例化它们来使用,以便更好地了解它们是如何工作的.每个Field的实例都有一个cle ...
- django表单
一.主要内容 1.服务端获取HttpRequest信息 1)url相关信息 2)HttpRequest.META中包含的键值对 3)HttpRequest中用 ...
- python 全栈开发,Day111(客户管理之 编辑权限(二),Django表单集合Formset,ORM之limit_choices_to,构造家族结构)
昨日内容回顾 1. 权限系统的流程? 2. 权限的表有几个? 3. 技术点 中间件 session orm - 去重 - 去空 inclusion_tag filter 有序字典 settings配置 ...
- python3之Django表单(一)
1.HTML中的表单 在HTML种,表单是在<form>...</form>种的元素,它允许用户输入文本,选择选项,操作对象等,然后发送这些数据到服务器 表单元素允许用户在表单 ...
随机推荐
- 【转】Vim显示中文乱码
Windows下,在Vim中如果想让中文正常显示,可以在 Vim安装目录下找到_vimrc 文件,用记事本打开就行,然后在其中加入如下语句: set fileencodings=gb2312,gb ...
- js正则定义支付宝账号、手机号、邮箱
一.支付宝账号:可以只输入数字.字母.字母(数字)+数字(字母),其中只字母中可以含有@._或者.也可以三者都可以包含并且可以在任意位置,限制:小于等于30位(可根据需求自定义范围): let zh ...
- cogs 2632. [HZOI 2016] 数列操作d
2632. [HZOI 2016] 数列操作d ★★★ 输入文件:segment.in 输出文件:segment.out 简单对比时间限制:3 s 内存限制:512 MB [题目描述] ...
- linux入门系列8--shell编程
本文将结合前面介绍的Linux命令.管道符等知识,通过VI编辑器编写Shell脚本,实现能自动化工作的脚本文件. 在讲解Linux常用命令"linux入门系列5--新手必会的linux命令& ...
- 【译】如何使用Vue过渡效果来提升用户体验
在Vue应用中添加过渡效果是一个可以使你的项目感觉更专业的简单方法.通过提升用户体验,可以使你的网站留住更多的用户以及提高转化率. 只需要简单的处理就可以获得巨大的回报,何乐而不为? 在这个指南中,我 ...
- iOS使用fastlane自动化打包到fir(最全最详细流程)
# iOS使用fastlane自动化打包到fir(最全最详细流程)1. **首先确认是否安装了ruby,终端查看下ruby版本**> ruby -v终端输出:ruby 2.4.1p111 (20 ...
- java 数组2
一.创建异常 1.空指针异常 2.超出索引范围 二.遍历 for循环 三.求数组中的最大值 package cn.wt.day05.demon02; public class DemonArray03 ...
- MySQL-5.7.29 的安装与配置
解压缩,我这里的解压路径是:D:\Program Files\Java MySQL-5.7.29下载地址:https://www.jianguoyun.com/p/DcKSfd8Q6LnsBxiY8c ...
- Nginx搭建过程
https://www.cnblogs.com/gscq073240/articles/6773000.html
- tarjan缩点练习 洛谷P3387 【模板】缩点+poj 2186 Popular Cows
缩点练习 洛谷 P3387 [模板]缩点 缩点 解题思路: 都说是模板了...先缩点把有环图转换成DAG 然后拓扑排序即可 #include <bits/stdc++.h> using n ...