ETJava Beta | Java    注册   登录
  • 搜索:
  • DRF-Parser解析器组件源码分析和应用

    发表于      阅读(1)     博客类别:Crawler     转自:https://www.cnblogs.com/harry6/p/18508869
    如有侵权 请联系我们删除  (页面底部联系我们)  

    1. 解析器源码分析

    注意:以下源码为了方便理解已进行简化,只保留了解析器相关的代码

    # 视图函数:
    class MyView(APIView):
        def post(self, request):
            print(self.request.data)  # 触发解析流程
            return Response("ok")
    
    解析并获取数据的源码分析:

    image
    image

    获取解析器的源码分析:

    image
    image

    解析器解析数据的源码分析(以JSONParser为例):

    image

    2.实践应用

    # 视图类中:
    class MyView(APIView):
        # 指定解析器(如果未指定则用默认的parser_classes=[MultiPartParser, JSONParser, FormParser]
        parser_classes = [JSONParser, FormParser]  # 只能解析JSON和form表单数据
    
        # 匹配解析器的方法(默认使用该类中的方法来匹配解析器,即使不显式地写出来也能生效)
        content_negotiation_class = DefaultContentNegotiation
    
        def post(self, request):
            print(self.request.data)
            return Response("ok")