7:Django-DRF-解析器和渲染器
解析器和渲染器
解析器的作用:
解析器的作用就是服务端接收客户都安传来的数据,把数据解析成自己想要的数据类型。
本质就是对请求进行解析。
在了解解析器之前~大家要先知道Accept以及ContentType请求头。
Accept是告诉对方我能解析什么样的数据,通常也可以表示我想要什么样的数据。
ContentType是告诉对方我给你的是什么样的数据类型。
那大家想一下,解析器工作原理的本质应该是什么~~~~~
就是拿到请求的ContentType来判断前端给我的数据类型是什么,然后我们去拿相应的解析器去解析数据。
Django的解析器
我们请求进来请求体中的数据在request.body中,那也就证明,解析器会把解析好的数据放入request.body
案例使用
全局解析器:
settings:
REST_FRAMEWORK = {
'DEFAULT_PARSER_CLASSES':[
'rest_framework.parsers.JSONParser',
'rest_framework.parsers.FormParser',
]
}
局部解析器:
不进行全局文件配置,在指定视图中添加解析器
parser_classes = [JSONParser,FormParser]
豁免:
# 不适用解析器
parser_classes = []
view:
from rest_framework.views import APIView
from rest_framework.parsers import JSONParser,FormParser
class Test(APIView):
# 使用解析器
parser_classes = [JSONParser,FormParser]
def get(self,request):
return HttpResponse(‘ok‘)
def post(self,request):
print(request.data)
return HttpResponse(‘post‘)
渲染器
渲染器其实就是帮助我们友好的展示数据
使用案例:
全局渲染器:
settings:
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
)
}
局部渲染器:
renderer_classes = [JSONRenderer]
豁免:
renderer_classes = []