# 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 只是重写了一层