form校验参数

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的时候可以看到具体的错误信息,如下图:

接下来把分页先实现了,在views_new.py文件里导入from django.core.paginator import Paginator,因为要在查询的时候进行分页,所以要在个get方法里面进行,

猜你喜欢

转载自www.cnblogs.com/laosun0204/p/12289344.html