关于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、定义forms表单字段时,只能实现一些基本的验证,如同学所说的最大长度、最小长度、能否为空等,稍复杂的验证需要自定义实现,例如要求输入内容为手机号、验证失败时显示自定义信息等;
表单验证可以从前端进行校验,也可以从后端进行校验,前端验证可以提升用户体验 ,缺点在于可以通过某些方式跳过表单验证;后端进行验证,可以有效过滤非法字段,也能有效预防恶意插入,视图函数中的验证就是后端验证。实际开发过程中前端、后端都要进行验证,双重验证既可以提高用户体验,又确保安全性。
2、日期字段,比如定义birth_date = forms.DateField(label='生日'),那么在前台输入1、2、2020-x-1都是可以提交的,视图函数中验证失败
同学可以再试试,如果还是有问题,可以把代码粘贴在这里,老师结合同学定义的表单字段再看一下
3、如果表单字段添加了initial属性,例如username字段,通过表单验证时,要打印username字段
另外,建议同学分开提问,便于理解、查看。
祝:学习愉快!
- 参与学习 人
- 提交作业 5211 份
- 解答问题 2433 个
Facebook曾声称“只招全栈工程师”!全栈用人需求猛增,市面人才紧缺。 0基础进击Python全栈开发,诱人薪资在前方!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星