日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

drf8 解析器

發布時間:2024/9/3 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 drf8 解析器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

解析器的介紹

解析器的作用就是服務端接收客戶端傳過來的數據,把數據解析成自己想要的數據類型的過程。

本質就是對請求體中的數據進行解析。

Accept與ContentType請求頭。

Accept是告訴對方我能解析什么樣的數據,通常也可以表示我想要什么樣的數據。

ContentType是告訴對方我給你的是什么樣的數據類型。

解析器工作原理的本質就是拿到請求的ContentType來判斷前端給我的數據類型是什么,然后我們去拿相應的解析器去解析數據。

請求進來請求體中的數據在request.body中,那也就證明,解析器會把解析好的數據放入request.body

在視圖中可以打印request的類型,能夠知道request是WSGIRequest這個類。

可以看下這個類的源碼是怎么拿到request.POST數據的

class DjangoView(View):def get(self, request):print(type(request)) #<class 'django.core.handlers.wsgi.WSGIRequest'>print(request.body)# Request# request.GET# request.POST# json request.bodyreturn HttpResponse("django解析器測試~~")

django WSGIRequest 中 request的POST

application/x-www-form-urlencoded不是不能上傳文件,是只能上傳文本格式的文件,

multipart/form-data是將文件以二進制的形式上傳,這樣可以實現多種類型的文件上傳

一個解析到request.POST,?? request.FILES中。

也就是說我們之前能在request中能到的各種數據是因為用了不同格式的數據解析器

DRF的解析器

什么時候我們的解析器會被調用呢,是不是在request.data拿數據的時候

我們說請求數據都在request.data中,那我們看下這個Request類里的data~~


rest_framework/request.py

得到解析器后,調用解析器里的parse方法

DRF配置的默認的解析器的類

DRF支持Json,Form表單的請求,包括多種文件類型的數據

在我們的視圖中配置視圖級別的解析器

DRF的渲染器

渲染器就是友好的展示數據

DRF給我們提供的渲染器有

在瀏覽器中展示的DRF測試的那個頁面~就是通過瀏覽器的渲染器來做到的

可以展示Json數據類型

from django.shortcuts import render from django.views import View from django.http import HttpResponse from django.core.handlers.wsgi import WSGIRequest from rest_framework.views import APIView from rest_framework.response import Response from rest_framework.negotiation import DefaultContentNegotiation from rest_framework import parsersclass DjangoView(View):def get(self, request):print(type(request)) #<class 'django.core.handlers.wsgi.WSGIRequest'>print(request.data)# Request# request.GET# request.POST# json request.bodyreturn HttpResponse("django解析器測試~~")class DRFView(APIView):parser_classes = [parsers.JSONParser, ]def get(self, request):# request 重新封裝的request Request# request.data#return Response("DRF解析器的測試~~") view

總結

以上是生活随笔為你收集整理的drf8 解析器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。