首页 > 其他 > 详细

form校验参数

时间:2020-02-09 23:24:42      阅读:80      评论:0      收藏:0      [点我收藏+]

form校验参数

先把CaseForm类写出来,前提是导入forms,from django import forms,如下图:

技术分享图片

 

然后修改CaseView类下的post方法,如下图:

技术分享图片

 

要把校验字段的逻辑放在CaseForm里,如果校验单个字段,要以clean开头,加上字段的名字,如果校验多个字段单独clean,前提要导入from django.core.exceptions import ValidationError,方法新增代码如下图:

技术分享图片

 

上图中clean_method是钩子,就是写类的时候预留出来的,然后把正常和异常的请求都试一下,如果异常都会把异常的原因和打印出来

ModelForm的使用

接下来使用ModelForm,这个更好用,CaseForm里的字段和方法都是手写的,使用ModelForm那些字段和方法都不需要写,代码更加简洁,在CaseForm类下面在创建一个CaseForm2的类,新增代码如下图:

技术分享图片

然后把CaseView类里的CaseForm改成CaseForm2,如下图:

技术分享图片

 

在postman里点击Send按钮,如下图:

技术分享图片

 

报错了,日志里报run_count是必填项,在run_count增加null=True, blank=True,这样run_count就不是非必填的了,可以为空了,接下来修改表结构,运行python manage.py makemigrations和python manage.py migrate,再次在postman里点击Send按钮,报错了,报错如下图:

技术分享图片

 

修改代码,把CaseForm2类下面的fields字段注释,写上如下图代码:

技术分享图片

 

再次在postman里点击Send按钮,这次成功了,可以多次添加重复的标题,因为标题没有设置唯一性,如果在title里设置unique=True,那么添加重复的title就会报错,接下来在CaseSet类上面在创建一个CaseSetForm的类,新增代码如下图:

技术分享图片

 

接下来修改CaseSet里面的代码,如下图:

技术分享图片

 

然后在urls.py里找到路径是path(‘case_set_new‘, views.CaseSet.as_view()),接下来在postman里请求,如下图:

技术分享图片

请求成功了也可以把models.CaseSet.objects.create(**form.cleaned_data)这行代码注释掉,换成form.save(),同样可以达到效果

 

在testcase目录下新建一个views_new.py文件,把views.py文件里的CaseView和CaseSet类的代码拷到views_new.py里,根据标红在导入相关的文件,views_new.py文件里的代码如下图:

技术分享图片

技术分享图片

技术分享图片

在testcase目录下新建一个forms.py文件,专门写Form,新增代码如下图:

技术分享图片

把views.py里的CaseForm类复制到forms.py里,改个名字叫CaseFormOld,复制后forms.py文件里既有上图的内容,也有下图的代码:

技术分享图片

然后在配置urls.py文件,新增代码如下图:

技术分享图片

在一级目录下新建一个utils目录,在utils下新建一个tools.py文件,新增代码如下图:

技术分享图片

这个方法放在views_new.py里的else里的data里,让报错信息尽可能简洁,在运行postman的时候可以看到具体的错误信息,如下图:

技术分享图片

 

form校验参数

原文:https://www.cnblogs.com/laosun0204/p/12289344.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!