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方法完成解析

转载于:https://www.cnblogs.com/zhengyuli/p/11142801.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值