日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

django_rest_framework之GenericAPIView(二)之搜索、排序、分页讲解

發布時間:2025/3/21 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 django_rest_framework之GenericAPIView(二)之搜索、排序、分页讲解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、搜索過濾的步驟

1、在全局配置文件settings.py中設置’DEFAULT_FILTER_BACKENDS’,‘DEFAULT_FILTER_BACKENDS’指定使用的過濾搜索引擎類路徑(SearchFilter為搜索引擎類)

2、在繼承了GenericAPIView的類視圖中,search_fields類屬性指定模型類中需要進行搜索過濾的字段名

3、利用postman進行搜索查詢

4、如果我想改變搜索關鍵字search,怎么改?
直接將rest_framework\settings.py文件中的’SEARCH_PARAM’: ‘search’,復制到django中的setting.py文件中,改變search值即可
再利用postman進行搜索查詢,得知成功

5、可以在字段名稱前加相應的符號,指定查詢類型,
‘^’: ‘istartswith’,
‘=’: ‘iexact’,
‘$’: ‘iregex’,
6、實例方法中必須調用filter_queryset方法,并且要傳入查詢集對象

7、想要在特定的視圖類中進行過濾功能
a、首先導入:from rest_framework import filters
b、將filters.SearchFilter加入到filter_backends類屬性中

filter_backends在繼承了GenericAPIView的類視圖中指定使用的過濾引擎類,優先級高于全局(settings.py文件)

二、排序過濾的步驟

1、在全局配置文件settings.py中設置’DEFAULT_FILTER_BACKENDS’,'DEFAULT_FILTER_BACKENDS’指定使用的排序過濾引擎類路徑(OrderingFilter為排序引擎類)

2、 filter_backends在繼承了GenericAPIView的類視圖中指定使用的過濾引擎類(搜索過濾、排序過濾),優先級高于全局
在全局使用用的是類的路徑字符串,在視圖中用的引擎類的引用

3、將允許前端進行排序的字段放到ordering_fields類中,ordering_fields為列表,ordering_fields里之外的字段不允許進行排序

4、查詢集為:將查詢集進行過濾再賦予一個新的查詢集

5、再利用postman進行搜索查詢,得知成功

6、默認為升序排列,降序操作:
在排序字段前-:例如-name

7、如果對多個字段進行排序操作:
用逗號進行拼接

三、分頁設置

1、在全局配置文件settings.py中設置’DEFAULT_PAGINATION_CLASS’,'DEFAULT_PAGINATION_CLASS’指定使用的分頁引擎類路徑(PageNumberPagination為分頁引擎類)
2、需要指定PAGE_SIZE參數,表示每頁展示多少條數據

3、
a、調用paginate_queryset方法對查詢集對象進行分頁,(不能傳模型對象,因為模型對象只有一條數據,不做分頁操作)
b、調用get_paginated_response方法,將序列化之后的數據進行分頁,并返回Response響應

5、再利用postman進行分頁查詢,得知成功

6、 前端獲取指定的頁碼以及頁碼中一定的數據
a、新建一個py文件(pagination.py),放到指定的文件夾下(utils)
b、重寫PageNumberPagination方法(重寫PageNumberPagination方法,為了繼續使用該名稱,可以用from rest_framework.pagination import PageNumberPagination as _PageNumberPagination實現)


7、可以在特定的類視圖下指定分頁引擎類,高于全局

8、前端請求后,要實現最大頁和當前頁
a、重寫get_paginated_response方法,將操作后的數據為字典,再添加key為current_num、max_num,最后再返回response

9、postman訪問,結果正確

總結

以上是生活随笔為你收集整理的django_rest_framework之GenericAPIView(二)之搜索、排序、分页讲解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。