DRF官方文件之Response

2021-10-14 16:42:06 字數 2009 閱讀 4900

responses

rest framework提供了乙個response類來根據客戶端的請求方式返回不同型別的資料。

response類繼承自django的******templateresponse。response物件會初始化python格式的資料。rest framework使用標準的http協議內容決定最終返回的資料內容。

除了使用response之外,你還可以在你的檢視中使用httpresponse或者streaminghttpresponse物件。但是response會是乙個更好的選擇,因為它可以被渲染成更多的格式。

除非你想高度定製化rest framework,否則就在apiview和@api_view裡使用response返回內容,它能確保在檢視返回之前根據協議內容來確定返回資料格式。

creating response(建立response)

# 初始化語法

response(data, status=

none

, template_name=

none

, headers=

none

, content_type=

none

)"""

data: 用於建立response物件的序列化之後的資料

status:response的狀態碼。預設是200

template_name:模板名,選擇了htmlrender的時候使用

headers:用於response的http頭部內容字典

content_type:response的內容型別,一般情況都會自動設定。

"""

response和httpresponse不同的地方在於,前者不需要使用渲染轉換之後的資料來初始化,可以直接初始化python的資料型別。

但是response不能處理複雜的資料型別,例如django的model型別例項,在呼叫response之前必須把它們序列化成python的原始資料型別(dict、 list等)。可以通過drf的序列化器serializer或者自定義的序列化方式來序列化。

# 舉例說明

data = user.objects.

all(

)# return response(data) # 這是錯誤的,會丟擲異常

# 這裡呼叫了序列化器,返回的是序列化之後的資料,是可行的

response(self.get_serializer(data)

.data)

# 這裡自己手動轉換資料為列**式,是合法的

data =

[for i in data]

response(data)

屬性
.data:response使用的已序列化的,未渲染的資料

.status_code:http返回的數字狀態碼

.content:渲染後的內容,呼叫.content之前必須保證.render()方法已被呼叫

.template_name:模板名,只有在指定了模板渲染方式的時候才需要

.accepted_renderer:將用於渲染response的渲染器例項。會自動設定

.accepted_media_type:**資料型別。會自動指定

.renderer_context:會傳遞給render方法的一些資訊字典。會自動設定

標準httpresponse屬性

response可以使用標準屬性和方法。例如設定http頭

response = response(

)response[

"cache-control"]=

"no-cache"

"""

.render():用於渲染序列化資料的方法。這個方法被呼叫之後,.content屬性就會被設定。

"""response.render(data, accepted_media_type, renderer_context)

# 不需要手動指定

官方文件之Cookie

蘋果文件翻譯內容 由於http協議的無狀態性,客戶端通常使用的持久化儲存資料都是來自於攜帶cookies的url網路請求 系統缺省會每次在傳送網路請求的時候在請求頭裡面設定cookie,我們通常沒有管理他,通過charles軟體抓包可以明顯的看到請求頭裡面多了個set cookie 引數 url l...

drf之自動生成介面文件

rest framework可以自動幫助我們生成介面文件。介面文件以網頁的方式呈現。自動介面文件能生成的是繼承自apiview及其子類的檢視。rest framewrok生成介面文件需要coreapi庫的支援。1 pip install coreapi 在總路由中新增介面文件路徑。文件路由對應的檢視...

drf框架介面文件

rest framework可以自動幫助我們生成介面文件。介面文件以網頁的方式呈現。自動介面文件能生成的是繼承自apiview及其子類的檢視。pip install coreapi 在總路由中新增介面文件路徑。文件路由對應的檢視配置為rest framework.documentation.incl...