九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
drf—— drf的請求與響應(yīng)

一、Request

#常用屬性
    -data :前端以post請求提交的數(shù)據(jù)都在它中
    -FILES :前端提交的文件
    -query_params:就是原來的request.GET
    -重寫了 __getattr__
        -使用新的request.method其實取得就是原生request.method(通過反射實現(xiàn))

二、Response

1.全局&局部配置模板的顯示方式

rest_framework.response.Response

# 通過配置,選擇默認模板的顯示形式(瀏覽器方式,json方式)
    -配置文件方式(全局)
        -如果沒有配置,默認有瀏覽器和json
            -drf有默認配置文件
            from rest_framework.settings import DEFAULTS
            REST_FRAMEWORK = {
            'DEFAULT_RENDERER_CLASSES': (  # 默認響應(yīng)渲染類
                'rest_framework.renderers.JSONRenderer',  # json渲染器
                'rest_framework.renderers.BrowsableAPIRenderer',  # 瀏覽API渲染器
            )
            }
    -在視圖類中配置(局部)
        -粒度更小
        -class BookDetail(APIView):
            renderer_classes=[JSONRenderer,]

2.Response構(gòu)造

源碼內(nèi)構(gòu)造方式: Response(data, status=None, template_name=None, headers=None, content_type=None)

####

data數(shù)據(jù)不要是render處理之后的數(shù)據(jù),只需傳遞python的內(nèi)建類型數(shù)據(jù)即可,REST framework會使用renderer渲染器處理data。

data不能是復(fù)雜結(jié)構(gòu)的數(shù)據(jù),如Django的模型類對象,對于這樣的數(shù)據(jù)我們可以使用Serializer序列化器序列化處理后(轉(zhuǎn)為了Python字典類型)再傳遞給data參數(shù)。

參數(shù)說明:

  • data: 為響應(yīng)準備的序列化處理后的數(shù)據(jù);
  • status: 狀態(tài)碼,默認200;
  • template_name: 模板名稱,如果使用HTMLRenderer 時需指明;
  • headers: 用于存放響應(yīng)頭信息的字典;
  • content_type: 響應(yīng)數(shù)據(jù)的Content-Type,通常此參數(shù)無需傳遞,REST framework會根據(jù)前端所需類型數(shù)據(jù)來設(shè)置該參數(shù)。

3.常用屬性

#常用屬性

    -from rest_framework.response import Response
    -data:響應(yīng)的字典
    -status:http響應(yīng)的狀態(tài)碼
        -drf提供給你了所有的狀態(tài)碼,以及它的意思
        from rest_framework.status import HTTP_201_CREATED
    -template_name:模板名字(一般不動),了解
    -headers:響應(yīng)頭,字典
    -content_type:響應(yīng)的編碼方式,了解
    
    
 # 自己封裝一個Response對象
      class CommonResponse:
        def __init__(self):
            self.code=100
            self.msg=''
        @property
        def get_dic(self):
            return self.__dict__
# 自己封裝一個response,繼承drf的Response

4.狀態(tài)碼

為了方便設(shè)置狀態(tài)碼,REST framewrok在rest_framework.status模塊中提供了常用狀態(tài)碼常量

#1)信息告知 - 1xx

HTTP_100_CONTINUE
HTTP_101_SWITCHING_PROTOCOLS

#2)成功 - 2xx
HTTP_200_OK
HTTP_201_CREATED
HTTP_202_ACCEPTED
HTTP_203_NON_AUTHORITATIVE_INFORMATION
HTTP_204_NO_CONTENT
HTTP_205_RESET_CONTENT
HTTP_206_PARTIAL_CONTENT
HTTP_207_MULTI_STATUS

#3)重定向 - 3xx
HTTP_300_MULTIPLE_CHOICES
HTTP_301_MOVED_PERMANENTLY
HTTP_302_FOUND
HTTP_303_SEE_OTHER
HTTP_304_NOT_MODIFIED
HTTP_305_USE_PROXY
HTTP_306_RESERVED
HTTP_307_TEMPORARY_REDIRECT

#4)客戶端錯誤 - 4xx
HTTP_400_BAD_REQUEST
HTTP_401_UNAUTHORIZED
HTTP_402_PAYMENT_REQUIRED
HTTP_403_FORBIDDEN
HTTP_404_NOT_FOUND
HTTP_405_METHOD_NOT_ALLOWED
HTTP_406_NOT_ACCEPTABLE
HTTP_407_PROXY_AUTHENTICATION_REQUIRED
HTTP_408_REQUEST_TIMEOUT
HTTP_409_CONFLICT
HTTP_410_GONE
HTTP_411_LENGTH_REQUIRED
HTTP_412_PRECONDITION_FAILED
HTTP_413_REQUEST_ENTITY_TOO_LARGE
HTTP_414_REQUEST_URI_TOO_LONG
HTTP_415_UNSUPPORTED_MEDIA_TYPE
HTTP_416_REQUESTED_RANGE_NOT_SATISFIABLE
HTTP_417_EXPECTATION_FAILED
HTTP_422_UNPROCESSABLE_ENTITY
HTTP_423_LOCKED
HTTP_424_FAILED_DEPENDENCY
HTTP_428_PRECONDITION_REQUIRED
HTTP_429_TOO_MANY_REQUESTS
HTTP_431_REQUEST_HEADER_FIELDS_TOO_LARGE
HTTP_451_UNAVAILABLE_FOR_LEGAL_REASONS

#5)服務(wù)器錯誤 - 5xx
HTTP_500_INTERNAL_SERVER_ERROR
HTTP_501_NOT_IMPLEMENTED
HTTP_502_BAD_GATEWAY
HTTP_503_SERVICE_UNAVAILABLE
HTTP_504_GATEWAY_TIMEOUT
HTTP_505_HTTP_VERSION_NOT_SUPPORTED
HTTP_507_INSUFFICIENT_STORAGE
HTTP_511_NETWORK_AUTHENTICATION_REQUIRED

 

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
07 渲染模塊
09 異常模塊
探索drf執(zhí)行流程之APIView源碼分析
DRF對Django請求響應(yīng)做了技術(shù)升級
drf——基于jwt的多方式登錄以及自定義多方式登錄
更高效的Python CSV文件導(dǎo)出
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服