django框架的基礎知識點《陸》
阿新 • • 發佈:2018-11-10
==============================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',
}