二、django-res-framework—請求和響應

一、Request
1、核心屬性:request.data,類似於request.POST

request.POST  # 僅處理表單數據,爲POST方法工作
request.data  # 處理任意數據.  Works for 'POST', 'PUT' and 'PATCH' methods.

二、Response
該對象是一種TemplateResponse類型,採用未呈現的內容並使用內容協商來確定要
返回給客戶端的正確內容類型。

return Response(data)	#呈現客戶端所請求的內容類型

refactor:重構

三、
suffix:後綴

# from rest_framework import status
# from rest_framework.decorators import api_view
# from rest_framework.response import Response

DRY:don‘t repeat yourself

四、FBV與CBV,爲什麼CBV更好????

Python是一個面向對象的編程語言,如果只用函數來開發,有很多面向對象的優點就錯失了(繼承、封裝、多態)。
所以Django在後來加入了Class-Based-View。可以讓我們用類寫View。這樣做的優點主要下面兩種:

1.提高了代碼的複用性,可以使用面嚮對象的技術,比如Mixin(多繼承)
2.可以用不同的函數針對不同的HTTP方法處理,而不是通過很多if判斷,提高代碼可讀性

五、使用mixins:混入

from rest_framework import mixins
from rest_framework import generics

minxins.ListModelMixin:針對get queryset提供.list()方法
minxins.RetrieveModelMixin:針對get model提供.retrieve()方法
minxins.CreateModelMixin:針對post提供.create()方法
minxins.UpdateModelMixin:針對put提供.update()方法
minxins.DestroyModelMixin:針對delete提供.destroy()方法
generics.GenericAPIView:爲視圖提供核心功能(.as_view()等)

注:無論queryset還是model都有這兩行
queryset=Snippet.objects.all()
serializer_class = SnippetSerializer

請求的格式
    def get(self, request, *args, **kwargs):
        return self.list(request, *args, **kwargs)

六、混合通用視圖

generics.ListCreateAPIView:get query+post+APIView
generics.RetrieveUpdateDestroyAPIView:get model+put+delete+APIView

queryset = Snippet.objects.all()
serializer_class = SnippetSerializer

七、python中關鍵字、函數和方法的區別

1.關鍵字:關鍵字是python內置的,具有特殊意義的標識符,自定義標識符命名時不可與之重複。可通過以下
代碼查看python內置的關鍵字內容
import keyword
print(keyword.kwlist)
2.函數:函數是封裝了一些獨立的功能,可以直接調用,python內置了許多函數,同時可以自建函數來使用。
3.方法:方法和函數類似,同樣封裝了獨立的功能,但是方法是需要通過對象來調用的,表示針對這個
對象要做的操作,使用時採用點方法。


八、@api_view的作用是什麼??

確保在視圖中接收到Request實例,並將上下文添加到Response,以便可以執行內容協商。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章