rest-framework之解析器

解析器作用

在我的视图类里能够控制前端传过来的数据格式,再对前端传过来的请求头 content-type数据格式进行解析,有application/json,x-www-form-urlencoded,form-data等格式

三种编码格式

-urlencoded:在body体中的格式是:name=zyl&age=18&wife=gaoyuanyuan
-formdata:在body体中的格式数据部分跟文件部分有区分
-json格式:在body体中就是json格式

json格式

urlencoded,formdata

 现在限制就只能解析json格式,就要用到解析器

现点APIview找到解析器的固定名先给他写上去然后导入JSONParser

from rest_framework.parsers import JSONParser

点parsers进去如果不知道每个类代表什么可以点进去看这里

局部使用

全局使用

这个我们不自己配,他默认DEFAULT里面也已经给我们配好了三个,除非我们要限制只能解析JSON格式,

settings.py配置

REST_FRAMEWORK = {
    'DEFAULT_PARSER_CLASSES':[
        'rest_framework.parsers.JSONParser'
        'rest_framework.parsers.FormParser'
        'rest_framework.parsers.MultiPartParser'
    ]

}

 源码分析

解析器的入口是request里的data方法

点进去

media_type是解析类型, 

每个类都有一个parse方法,这就是鸭子类型

源码流程:

-当调用request.data的时候去执行解析方法----》根据传过来的编码方式选择一个解析器对象,调用解析器对象的parser方法完成解析

posted on 2019-07-06 15:50  ZY_LO  阅读(209)  评论(0编辑  收藏  举报

导航