django-rest-framework框架 第二篇 之Mixin擴展類

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函數 註釋 完結   續更...

相關文章
相關標籤/搜索