关于Django表单验证

关于Django表单验证

问题1:

在定义forms表单时,已经添加了一些必要验证,比如最大长度、最小长度、能否为空。

在网页上输错时也会有提示,并且不会提交

那为什么还要在视图函数中判断验证是否通过,因为只要能提交上去那必然是通过验证。


问题2:

还有日期字段:我输入1、2都会提示请输入日期形式,那么把2020-1-1改成2020-x-1怎么就能提交了?虽然在视图函数里验证不通过,但怎么就能提交,那为什么1、2输入进去他不能提交,反正到视图函数里验证失败就是咯。


问题3:关于表单类的initial属性

不论我是在forms.py中定义表单字段时,添加initial参数

还是在views.py中给表单类添加initial参数

最后验证通过表单时,我想打印 form.initial总是空字典,并没有出现我设置的初始化数据。

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学,你好!对同学的疑问做如下解答:

1、定义forms表单字段时,只能实现一些基本的验证,如同学所说的最大长度、最小长度、能否为空等,稍复杂的验证需要自定义实现,例如要求输入内容为手机号、验证失败时显示自定义信息等;

表单验证可以从前端进行校验,也可以从后端进行校验,前端验证可以提升用户体验 ,缺点在于可以通过某些方式跳过表单验证;后端进行验证,可以有效过滤非法字段,也能有效预防恶意插入,视图函数中的验证就是后端验证。实际开发过程中前端、后端都要进行验证,双重验证既可以提高用户体验,又确保安全性。

2、日期字段,比如定义birth_date = forms.DateField(label='生日'),那么在前台输入1、2、2020-x-1都是可以提交的,视图函数中验证失败

http://img1.sycdn.imooc.com//climg/60b9d44109ea83a703290123.jpghttp://img1.sycdn.imooc.com//climg/60b9d46609b6cdac02720115.jpg

同学可以再试试,如果还是有问题,可以把代码粘贴在这里,老师结合同学定义的表单字段再看一下

3、如果表单字段添加了initial属性,例如username字段,通过表单验证时,要打印username字段

http://img1.sycdn.imooc.com//climg/60b9d72109b98b7509210290.jpg

http://img1.sycdn.imooc.com//climg/60b9d8f10994380a08820454.jpg

另外,建议同学分开提问,便于理解、查看。

祝:学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师