Django表单字段参数required和表单验证

Django表单字段如:forms.CharField, forms.EmailField等,会默认传入参数required=True,也就是默认表单字段不能为空,如果对html5新特性不了解,会以为这仅仅是控制相应表单不能为空。

然后会碰到一个很奇怪的现象,我明明没有在模板中导入任何JavaScript,但是当我未在此字段填入任何内容而提交表单时,相应表单字段框会弹出一个“精致”的响应框”此字段不能为空“。实际上这就是h5新特性required导致的,<input>标签会自动带有required。

有时候这个默认样式就很碍事,我想要自定义js效果,因此就在表单字段内显式定义required=False就行了。

可是这样就会使表单判空机制失效,于是需要自定义表单验证
在表单类里面重写clean_[fieldname]()方法,fieldname就是各个表单字段名,并且一定要记住,如果只验证了一个字段,最后return self.cleaned_data[[fieldname]],如果对多个关联字段进行了验证,最后return self.cleaned_data。这些表单验证会在视图函数调用form.is_valid()时隐式触发。你也可以在将自定义验证内容覆盖重写在clean()里,注意一定要调用父类的 clean() 方法。

然后就可以在模板内通过form.errors进行错误信息渲染,它默认带有class='errorlist'的css样式,你也可以自定义。

关于表单验证的详细细节可以仔细阅读官方文档:
https://docs.djangoproject.com/zh-hans/3.0/ref/forms/validation/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值