国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

Django drf Responses

2020-01-22 11:44 更新

Responses

與基本的HttpResponse對(duì)象不同, TemplateResponse 對(duì)象保留view提供的上下文的詳細(xì)信息以計(jì)算 response. Response的最終輸出直到它在稍后的響應(yīng)過(guò)程中被需要才會(huì)計(jì)算。— Django 文檔

REST framework 通過(guò)提供一個(gè) Response 類來(lái)支持 HTTP content negotiation,該類允許你返回可以呈現(xiàn)為多種內(nèi)容類型的內(nèi)容,具體取決于客戶端的請(qǐng)求。

Response 類是 Django中 SimpleTemplateResponse 類的一個(gè)子類。Response 對(duì)象用Python基本數(shù)據(jù)類型初始化。 然后REST framework 使用標(biāo)準(zhǔn)的HTTP content negotiation 來(lái)確定如何呈現(xiàn)最終的響應(yīng)內(nèi)容。

你并不需要一定是用 Response 類,你可以從你的視圖返回常規(guī)的 HttpResponse 或者 StreamingHttpResponse 對(duì)象。使用Response類只提供了一個(gè)可以呈現(xiàn)多種格式的更好的界面來(lái)返回 content-negotiated 的 Web API 響應(yīng)。

除非由于某種原因你要對(duì) REST framework 做大量的自定義,否則你應(yīng)該始終對(duì)返回對(duì)象的views使用 APIView 類或者 @api_view 函數(shù)。這樣做可以確保視圖在返回之前能夠執(zhí)行 content negotiation 并且為響應(yīng)選擇適當(dāng)?shù)匿秩酒鳌?/p>

創(chuàng)建 responses

Response()

簽名: Response(data, status=None, template_name=None, headers=None, content_type=None)

與常規(guī)的 HttpResponse 對(duì)象不同,你不能使用渲染內(nèi)容來(lái)實(shí)例化一個(gè) Response 對(duì)象,而是傳遞未渲染的數(shù)據(jù),包含任何Python基本數(shù)據(jù)類型。

Response 類使用的渲染器無(wú)法自行處理像 Django model 實(shí)例這樣的復(fù)雜數(shù)據(jù)類型,因此你需要在創(chuàng)建 Response 對(duì)象之前將數(shù)據(jù)序列化為基本數(shù)據(jù)類型。

你可以使用 REST framework的 Serializer 類來(lái)執(zhí)行此類數(shù)據(jù)的序列化,或者使用你自定義的來(lái)序列化。

參數(shù):

  • data: response的數(shù)列化數(shù)據(jù).
  • status: response的狀態(tài)碼。默認(rèn)是200. 另行參閱 status codes.
  • template_name: HTMLRenderer 選擇要使用的模板名稱。
  • headers: A dictionary of HTTP headers to use in the response.
  • content_type: response的內(nèi)容類型。通常由渲染器自行設(shè)置,由content negotiation確定,但是在某些情況下,你需要明確指定內(nèi)容類型。

屬性

.data

Request 對(duì)象的未渲染內(nèi)容。

.status_code

HTTP 響應(yīng)的數(shù)字狀態(tài)嗎。

.content

response的呈現(xiàn)內(nèi)容。 .render() 方法必須先調(diào)用才能訪問(wèn) .content 。

.template_name

template_name 只有在使用 HTMLRenderer 或者其他自定義模板作為response的渲染器時(shí)才需要提供該屬性。

.accepted_renderer

將用于呈現(xiàn)response的render實(shí)例。

自動(dòng)通過(guò) APIView 或者 @api_view 在view返回response之前設(shè)置。

.accepted_media_type

由 content negotiation 階段選擇的媒體類型。

自動(dòng)通過(guò) APIView 或者 @api_view 在view返回response之前設(shè)置。

.renderer_context

一個(gè)將傳遞給渲染器的.render()方法的附加上下文信息字典。

自動(dòng)通過(guò) APIView 或者 @api_view 在view返回response之前設(shè)置。

標(biāo)準(zhǔn)的HttpResponse 屬性

Response 類擴(kuò)展了 SimpleTemplateResponse,并且所有常用的屬性和方法都是提供的。比如你可以使用標(biāo)準(zhǔn)的方法設(shè)置response的header信息:

response = Response()

response['Cache-Control'] = 'no-cache'

.render()

Signature: .render()

和其他的 TemplateResponse 一樣,調(diào)用該方法將response的序列化數(shù)據(jù)呈現(xiàn)為最終的response內(nèi)容。 當(dāng) .render() 被調(diào)用時(shí), response的內(nèi)容將被設(shè)置成在 accepted_renderer實(shí)例上調(diào)用 .render(data, accepted_media_type, renderer_context) 方法返回的結(jié)果。

你通常并不需要自己調(diào)用 .render() ,因?yàn)樗怯蒁jango的標(biāo)準(zhǔn)響應(yīng)周期來(lái)處理的。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)