drf 過濾與排序

2022-01-10 05:33:17 字數 2522 閱讀 8028

drf中如果想在url中直接寫過濾與排序,則需要安裝第三方模組。

pip install django-filter
其次你需要將該模組註冊進行django配置檔案中。

'rest_framework',

'django_filters',

]以下是一張書籍表和資料,我可能通過書名查,也可能通過**查詢。可能通過**排序,也可能通過id排序。

採用模型序列類:

from rest_framework import serializers

class bookmodelserializers(serializers.modelserializer):

class meta:

model = book

fields = "__all__"

採用listapiview

from rest_framework.generics import listapiview

class bookapi(listapiview):

queryset = book.objects.all()

serializer_class = bookmodelserializers

以下是url的配置:

from django.contrib import admin

from django.urls import path

urlpatterns = [

path('admin/', admin.site.urls),

path('books/', views.bookapi.as_view()),

]

使用filter_backends新增上過濾元件,並且使用filter_fields指定可以過濾的字段。

from rest_framework.generics import listapiview

from django_filters.rest_framework import djangofilterbackend # 匯入過濾元件

class bookapi(listapiview):

queryset = book.objects.all()

serializer_class = bookmodelserializers

filter_backends = [djangofilterbackend] # 過濾元件匯入

filter_fields = ("book_id","book_price") # 可以使用id過濾,也可以使用**過濾

# 只篩選出紅樓夢

# 不支援大於、小於等操作

全域性配置:

rest_framework =
使用filter_backends新增上排序元件,並且使用ordering_fields指定可以過濾的字段。

注意在請求時要用ordering作為key進行請求:

from rest_framework.generics import listapiview

from rest_framework.filters import orderingfilter # 匯入排序

class bookapi(listapiview):

queryset = book.objects.all()

serializer_class = bookmodelserializers

filter_backends = [orderingfilter] # 排序元件匯入

ordering_fields = ("book_id","book_price") # 可以使用id排序,也可以使用**排序

# 加了- 號代表降序

#

全域性配置:

rest_framework =

DRF的過濾與排序

對於列表資料可能需要根據字段進行過濾,我們可以通過新增django filter擴充套件來增強支援。pip install django filter 在配置檔案中增加過濾後端的設定 django filters 需要註冊應用,在settings檔案中配置 rest framework 檢視中指定要...

DRF 過濾 搜尋 排序功能

過濾功能利用的是第三方包 django filters,搜尋和排序利用的是 django drf 提供的 filters 示例 如下 from rest framework import filters 搜尋和排序功能 注意 這兩個是 drf 提供的功能 from django filters.re...

DRF過濾元件

from rest framework import pagination 基礎分頁 class pagenumberpagination pagination.pagenumberpagination 預設一頁顯示的條數 page size 2 查詢頁面的關鍵字 page query param ...