首页 > 其他 > 详细

rest-framework之解析器

时间:2020-03-19 11:39:34      阅读:49      评论:0      收藏:0      [点我收藏+]

1、解析器的作用

根据请求头 content-type 选择对应的解析器对请求体内容进行处理;

有application/json,x-www-form-urlencoded,form-data等格式;


举例说明:

1)发送application/json数据,让后端接收:
views.py

from django.shortcuts import render
from rest_framework.views import  APIView
from rest_framework.response import  Response

class Test(APIView):
    def post(self, request):
        print(request.data)
        print(type(request.data))
        return Response()


urls.py

url(r^test/, views.Test.as_view()),


postman测试,后端接收的是一个字典:

技术分享图片

技术分享图片


2)发送x-www-form-urlencoded数据,让后端接收:

视图和路由都不变;


postman测试,后端接收的是一个QueryDict:

技术分享图片

技术分享图片


3)发送form-data数据,让后端接收:

后端接收的也是一个QueryDict,不截图了;


由此可见:默认可以解析以上三种格式;



2、解析器的使用

现在问题来了,如果我只想解析application/json格式的数据怎么办呢?

1)解析器的局部使用

views.py

from django.shortcuts import render
from rest_framework.views import  APIView
from rest_framework.response import  Response

# 导入模块
from rest_framework.parsers import JSONParser


class Test(APIView):
    parser_classes = [JSONParser,]  # 只解析application/json
    def post(self, request):
        print(request.data)
        print(type(request.data))
        return Response()


其他配置不变,测试一下,可见其他格式已经不行了,就不逐一测试了:

技术分享图片


2)解析器的全局使用

setttins.py

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

rest-framework之解析器

原文:https://www.cnblogs.com/weiyiming007/p/12522760.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!