Django REST framework解析器

先看Django

请求信息来了之后有request.body和request.post等等

request.body是请求体内容,如果请求体有内容,它就有内容

那request.post里面的数据哪里来的呢

是通过request.body解析来的,

如果请求头中的Content-Type:application/x=www-form-urlencond,数据格式符合:name=alex&age=18 (form表单提交符合,ajax在不改变请求头下也符合)

就会把request.body的数据解析到request.post

上面解析过程用到的就叫做解析器,是django自带的解析器

下面讲rest_framework的解析器,也是对请求体数据进行解析,不过功能要强大的多

先看自带的JSON解析器(最重要的一个):

from rest_framework.parsers import JSONParser
class Eg(APIView):
	parser_classes = [JSONParser]                 #局部使用的解析器
    def post(self,request,*args,**kwargs):
        '''允许用户发送JSON格式数据
        conteny-type:application/json             #请求头只能是这样的,不然报错
        数据:{"name":''yue,'age':18}
        '''
        print(request.data)              #直接可以拿到数据{"name":''yue,'age':18}
        return HttpResponse("POST")

parser_classes 里面可以加多个解析器
比如再加一个:

from rest_framework.parsers import JSONParser,FormParser
parser_classes = [JSONParser,FormParser]  

FormParser支持解析的是:Content-Type:application/x=www-form-urlencond
这样一来就有了两个解析器可以用,会自动根据请求头选择对应解析器

全局配置:

REST_FRAMEWORK = {

    'DEFAULT_PARSER_CLASSES': (
        'djangorestframework_camel_case.parser.CamelCaseJSONParser',
        #'rest_framework.parsers.FormParser',
        #'rest_framework.parsers.MultiPartParser'
        #'rest_framework.parsers.JSONParser',
    ),

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值