django接口开发-代码优化中间件middlewares、自定义response

# django并没有处理PUT的数据,实际上put传过来的数据在request.body
# 需要导入 from django.http import QueryDict 来处理数据
put_data = QueryDict(requests.body)

#所以可以用middlewares实现QueryDict功能, 所有请求进来后处理成request.PUT,和其它方法一致
#setting中加入MIDDLEWARE
#新建myMiddlewares.py
from
django.http import QueryDict from django.middleware.common import MiddlewareMixin class PutMethodMiddleware(MiddlewareMixin): def process_request(self,request): '''请求过来之后先走到的这里''' if request.method == 'PUT': request.PUT = QueryDict(request.body)

#在PutView中引用。

#引入exception

#setting中 DEBUG = True,代表是否debug模式,上线后返回错误信息

from sky.settings import DEBUG
class ExceptionMiddleware(MiddlewareMixin):
    def process_exception(self, request, exception):
        if not DEBUG:
            return HttpResponse(exception)

#自定义response返回,创建一个custom_response.py

from django.http import JsonResponse

class NbResponse(JsonResponse):
    def __init__(self,code=200,msg='操作成功',**kwargs):  #默认code和msg,传入kwargs
        data = {"code":code,"msg":msg}
        data.update(kwargs)
        super().__init__(data=data,json_dumps_params={"ensure_ascii":False}) #重新父类构造方法   #json_dumps_params--有中文默认显示

#在custom_views逻辑中引用NbResponse,
from example.custom_response import NbResponse
传入返回数据封装
.....

return NbResponse(data=data_list) #其实等同于return JsonResponse 只是重写了一层
原文地址:https://www.cnblogs.com/whcp855/p/13651529.html