1. 程式人生 > >django框架的基礎知識點《陸》

django框架的基礎知識點《陸》

==============================GenericAPIView+***Mixin============================ 對於資料的處理方式:5種: 查詢多個====>list 查詢一個====>retrieve 建立========>create 修改========>update 刪除========>destroy heros==> list create listcreate hero===> retrieve==>1 update====>2 destroy====>3 1+2 1+3 1+2+3 總結: 屬性: queryset===>指定查詢範圍 serializer_class==>指定序列化器型別 方法: get_queryset()==>根據判斷,返回不同的查詢範圍 get_serializer_class()==>根據判斷,返回不同的序列化器型別 ====================檢視集 繼續簡化程式碼,遇到的問題是: 在同一個類中,不同出現同名的方法,如 def get(self,request): def get(self,request,pk): 此方法不能改名,因為這個方法的名稱是與請求方式對應的 能夠嘗試的方案: 1.修改python直譯器,支援類中方法同名,否定這個方案,因為這個團隊能力不夠 2.修改方法名稱,重寫dispatch()方法 request.method 使用: ModelViewSet+DefaultRouter===>將模型的crud操作最簡化 ====================檢視型別的選擇 APIView====================>不涉及到crud操作 GenericAPIView+5個Mixin====>完成操作,但不是所有的crud ModelViewSet+DefaultRouter=>完成全套的crud操作 ====================配置 # 如下是drf的配置 REST_FRAMEWORK = { # 身份認證的方式: 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework.authentication.BasicAuthentication', # 基本認證 'rest_framework.authentication.SessionAuthentication', # session認證 ), # 許可權判斷 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAuthenticated', ), # 限制訪問次數 'DEFAULT_THROTTLE_CLASSES': ( # 匿名訪問限制 'rest_framework.throttling.AnonRateThrottle', # 實名訪問限制 'rest_framework.throttling.UserRateThrottle' ), 'DEFAULT_THROTTLE_RATES': { # 匿名的頻度 'anon': '100/day', # 實名的頻度 'user': '1000/day' }, # 進行查詢的過濾 'DEFAULT_FILTER_BACKENDS': ( 'django_filters.rest_framework.DjangoFilterBackend', 'rest_framework.filters.OrderingFilter', ), # 分頁 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination', 'PAGE_SIZE': 1, # 每頁數目 # 獲取版本資訊的方式: 'DEFAULT_VERSIONING_CLASS': 'rest_framework.versioning.NamespaceVersioning', }