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