1. 解析器原始碼分析
注意:以下原始碼為了方便理解已進行簡化,只保留了解析器相關的程式碼
# 檢視函式:
class MyView(APIView):
def post(self, request):
print(self.request.data) # 觸發解析流程
return Response("ok")
解析並獲取資料的原始碼分析:
獲取解析器的原始碼分析:
解析器解析資料的原始碼分析(以JSONParser為例):
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")