国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

django rest framework之請求與響應(詳解)

2020-02-16 10:34:23
字體:
來源:轉載
供稿:網友

前言:在上一篇文章,已經實現了訪問指定URL就返回了指定的數據,這也體現了RESTful API的一個理念,每一個URL代表著一個資源。當然我們還知道RESTful API的另一個特性就是,發送不同的請求動作,會返還不同的響應,這篇文章就講一下django-rest-framework這個工具在這方面給我們帶來的便捷操作。

一、Request對象

平時我們在寫Django的視圖函數的時候,都會帶上一個request參數,這樣就能處理平時搭建網站時,瀏覽器訪問網頁時發出的常規的HttpRequest。但是現在我們導入了django-rest-framework,它能夠對request進行拓展,并且提供更靈活的請求解析。這個特性體現在哪呢?請看下面這個例子:

<SPAN style="FONT-SIZE: 13px">request.POST # Only handles <SPAN style="COLOR: #ff0000">form data</SPAN>. Only works for '<SPAN style="COLOR: #ff0000">POST</SPAN>' method. request.data # Handles <SPAN style="COLOR: #ff0000">arbitrary(任意的) data</SPAN>. Works for '<SPAN style="COLOR: #ff0000">POST', 'PUT' and 'PATCH</SPAN>' methods. </SPAN> 

request.POST只能處理前端發起的POST請求,只能處理表單提交的數據。而request.data可以處理任意數據,而不單單是前端提交的表單數據,可用于post, put, patch請求。

二、Response對象

和request對象一樣,django-rest-framework也對其進行了很實用的拓展,在我上一篇文章的snippets/views.py中,我們導入了JsonResponse用于返回json格式的響應,在視圖函數中是這樣的:

@csrf_exemptdef snippet_list(request): """ because we want to be able to POST to this view from clients that won't have a CSRF token we need to mark the view as csrf_exempt List all code snippets, or create a new snippet. """ if request.method == "GET":  snippets = Snippet.objects.all()  serializer = SnippetSerializer(snippets, many=True)  return JsonResponse(serializer.data, safe=False) elif request.method == "POST":  data = JSONParser().parse(request)  serializer = SnippetSerializer(data=data)  if serializer.is_valid():   serializer.save()   return JsonResponse(serializer.data, status=201)  return JsonResponse(serializer.errors, status=400)

也就是說,在return的時候就需要指明json格式,這樣顯得很不實用而且很單一,所以經過拓展后的Reponse對象就很方便了,它會根據客戶端的請求頭部信息來確定正確的內容類型以返回給客戶端。只需如下代碼:

<SPAN style="FONT-SIZE: 13px">return Response(data) # <SPAN style="COLOR: #ff0000">Renders to content type as requested by the client. </SPAN></SPAN> 

三、狀態碼

我們知道發送http請求時會返回各種各樣的狀態嗎,但是都是簡單的數字,比如200、404等,這些純數字標識符有時候可能不夠明確或者客戶端在使用的時候不清楚錯誤信息甚至是沒注意看不到,所以django-rest-framework也對此進行了優化,狀態碼會是HTTP_400_BAD_REQUEST、HTTP_404_NOT_FOUND這種,極大的提高可讀性

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江源县| 柞水县| 阜新市| 莆田市| 扶沟县| 东至县| 都匀市| 剑河县| 大洼县| 黄石市| 茶陵县| 红原县| 鄂温| 临江市| 聊城市| 广昌县| 庆云县| 化隆| 兰州市| 宁阳县| 北川| 铜山县| 平利县| 长泰县| 天等县| 康保县| 德兴市| 嵊州市| 彭州市| 壶关县| 吉水县| 沐川县| 招远市| 定陶县| 方城县| 三江| 南康市| 玛多县| 句容市| 汉川市| 随州市|