把views_new.py的delete方法拷贝到custom_view.py里,然后修改定义model_class = None,怕这个赋值错了,又封装了一个model方法,custom_view.py里新增的代码如下图:
接下来在view3.py里新增如下代码:
然后在postman里执行删除操作,传一个id,如下图:
去case表里可以看到id为1的case被删除,然后删除一个不存在id,也没有报错,因为不存在就get到id=None,就相当于id为空,什么都不删除
接下来写修改的代码,先在utils目录下新建一个middle_ware.py文件,新增代码如下图:
然后在settings.py的MIDDLEWARE里写上中间件的路径:‘utils.middle_ware.PutMiddleware‘,在postman里执行删除操作,在pycharm日志里可以看到如下图:
先走的是middle_ware.py里的process_request方法,然后走到custom_view.py里的delete方法,然后走到middle_ware.py里的process_response方法,请求的流程是先走中间件,先在settings.py的MIDDLEWARE数组里从上到下依次执行一遍,所有先打印的是process_request,然后走的是view,也就是costom_view.py里的delete方法,打印delete...,然后从MIDDLEWARE数组里从下到上依次返回,打印出process_response,中间件的功能有好多,可以在process_request里加上META,获得某个请求的ip,还有白名单设置等
如果costom_view.py里的delete方法里代码有写错的地方,把self.model.objects.filter(id=id).delete()改成self.model.objects.delete(id=id),就会走到process_exception,也可以捕捉到异常的原因,为了使报错少一些,可以修改一下代码,首先导入from .custom_response import nb_response,然后修改middle_ware.py里的process_exception方法,如下图:
在用postman跑一下,可以看到如下图:
在pycharm日志里可以看到打印的异常原因,如下图:
process_exception方法是做统一的异常处理,不会让用户看到一大堆错误
接下来封装request.PUT,复制views_new.py里的CaseSet里的put方法的代码到middle_ware.py的process_request方法里,首先要导入from django.http import QueryDict,修改后的代码如下图:
复制views_new.py里的CaseSet里的put方法的代码到custom_view.py里,删除掉if和else,把写死的都写成变化的,修改后代码如下图:
接下来验证一下删除的功能,在postman里配置如下图:
删除完成后,接下来完成查询操作,在utils目录下创建一个文件const.py,const.py里的代码如下图:
原文:https://www.cnblogs.com/laosun0204/p/12313028.html