Mixin擴展類 ['列表操做','過濾','搜索','排序']數據庫
<一>:<1>建立項目:django
配置 urls 主路由 框架
配置model文件(舉個例子,就以book爲模型)函數
當完成這步時 進行數據的 ''遷移'' 而後 '執行' 操做url
<2>在views中 導入通用視圖類 (只要是用mixin就要導入通用視圖類)
導入通用視圖類 (from rest_framework.generics import GenericAPIView)
導入mixin (from rest_framework.mixins import ListModelMixin)
定義一個類 類 中get函數 class BookListView(GenericAPIView,ListModelMixin):
def get(self,request):
return self.list(request)spa
<3> 建立一個序列化文件
導入 序列化 from rest_framework import serializers
導入 模型文件
定義 一個序列化的類
class BookSerializer(serializers.ModelSerializer):
class Meta: #修飾內部類
model = Book
fields = '__all__' 以下圖所示3d
<4>在views中 導入 序列化文件from .sers import *
在views中的get函數上方 寫
queryset = Book.objects.all()
serializer_class = BookSerializer
設置子路由 path('books/',BooklistView.as_view()), (books是變量不是固定)
並在setting 中添加框架INSTALLED_APPS='rest_framework'rest
配置子路由如圖下blog
完成過濾 搜索 排序 的操做
<1>都是在後臺過濾器中完成的
1,這裏要使用Django_filters模塊 沒有下載的去下載 pip install django_filters 可在Windows中cmd 添加便可排序
2,使用Django_filters提供的後臺過濾器類
在views中 get函數上方 操做程序 注意在setting中添加框架
INSTALLED_APPS 添加 'Django_filters'
導入 from django_filters.rest_framework import DjangoFilterBackend
filter_backends = [DjangoFilterBackend,SearchFilter,OrderingFilter] #用來作過濾後臺的 括號內可填寫 過濾後臺屬性
filter_fields = ['name'] #過濾 精確查找
search_fields = ['name'] #搜索 模糊查找
ordering_fields = ['price'] #排序
數據庫 添加數據 越多越好!!!!!
在views中 過濾後臺寫 屬性 以下圖所示
完成過濾
導入 搜索(from rest_framework.filters import SearchFilter)
再加個搜索在 過濾後臺中 以下圖所示
search_fields = ['name']
完成排序
導入 OrderingFilter 放在搜索後邊 便可
在 過濾後臺屬性中 添加OrderingFilter
完成 分頁 功能
導入分頁(from rest_framework.pagination import PageNumberPagination)
過濾後臺屬性下 寫
(1) pagination_class = PageNumberPagination #分頁功能
頁碼分頁 (默認是100條數據 分頁 可自定義 並繼承 PageNumberPagination) 以下圖所示
(2)能夠在 views中 重寫屬性 自定義一頁顯示的數據 以下:
class BookPage(PageNumberPagination):
# 重寫屬性
① page_size = 3 #一頁幾條數據
從新寫好代碼後 將pagination_class = (重寫的類名) 注:
② page_query_param = 'bw' #查找網頁的參數名 默認page
③ page_size_query_param=2 #設置一頁顯示的數據 並自動將數據分好總頁數
④ max_page_size = 2 # 一頁 最大設置的數據個數 以下圖所示
簡化代碼 class BookListView(GenericAPIView,ListModelMixin):
其中 括號內要顯示兩個參數 有方法合併兩個參數 ListAPIView合併
導入 from rest_framework.generics import ListAPIView
將簡化代碼 替換
將 類中的get函數 註釋 完結 續更...