フィルタアセンブリ
並べ替え検索フィルタグループ
DRF書か
第一歩
from rest_framework.filters import OrderingFilter
ステップ
ローカル設定フィルタを
filter_backends = [OrderingFilter,]
ソートフィールドから:発注= -価格、ID
ordering_fields = ['price', 'id', 'students']
第三段階は、
リクエストリンクされたスタイルの
http://127.0.0.1:8080?ordering=-price,id
ソート同じソートIDに従って行わ価格
カスタムは、(データの数を制限する)チェックグループをフィルタリング
最初のステップ
を作成するには、以下のフォルダを作成したアプリでfilters.py
気軽にファイル名を
第二ステップ
from rest_framework.filters import BaseFilterBackend
書き換えクラスの継承はBaseFilterBackend
、メソッドをオーバーライドfilter_queryset
from rest_framework.filters import BaseFilterBackend
class LimitFilter(BaseFilterBackend):
def filter_queryset(self, request, queryset, view):
li = request.query_params.get('li')
try:
# 取得到返回的是处理过后的queryset, 但是li可能是不是数字
return queryset[:int(li)]
except:
# 取不到返回原来的
return queryset
第三段階は、
カスタムフィルタをインポートします
from .filters import LimitFilter
第四の工程は、
フィルタを設定しました
filter_backends = [LimitFilter,]
グループ検索フィルターを検索
第一歩
from rest_framework.filters import SearchFilter
ステップは、
フィルタを設定しました
filter_backends = [SearchFilter,]
第三段階は、
検索可能なワードを設定するために
search_fields = ['name', 'brief']
検索を解く(であるフルテキスト検索で当前接口的序列化类连接的表中的字段
)
テーブルの偶数フィールドを照会することができません
第四段階の
要求リンクスタイル
http://127.0.0.1:8080?search=python
フィルタグループ検索ページ
クラスは唯一のページャ設定することができます
最初のステップ
を作成するには、以下のフォルダを作成したアプリでpaginations.py
気軽にファイル名を
第二段階
from rest_framework.pagination import PageNumberPagination, LimitOffsetPagination, CursorPagination
書き換えクラスの継承
BaseFilterBackend(普通分页器)
、LimitOffsetPagination(偏移分页器)
、CursorPagination(排序分页器)
この方法は、書き換えfilter_queryset
コードを:
from rest_framework.pagination import PageNumberPagination, LimitOffsetPagination, CursorPagination
# 普通分页器
class CoursePageNumberPagination(PageNumberPagination):
# 默认一页条数
page_size = 2
# 选择哪一页的key
page_query_param = 'page'
# 一般不开放自定义
# 用户自定义一页条数
page_size_query_param = 'page_size'
# 用户自定义一页最大控制条数
max_page_size = 10
# 偏移分页器(可以从第几条加载到第几条)
class CourseLimitOffsetPagination(LimitOffsetPagination):
# 默认一页条数
default_limit = 2
# 从offset开始往后显示limit条
limit_query_param = 'limit'
offset_query_param = 'offset'
max_limit = 2
# 排序分页器(按照规则排序并且分页)
class CourseCursorPagination(CursorPagination):
cursor_query_param = 'cursor'
page_size = 2
page_size_query_param = 'page_size'
max_page_size = 2
# ordering = 'id' # 默认排序规则,不能和排序过滤器OrderingFilter共存
第三段階は、
カスタムフィニッシャーをインポートします
from .paginations import CoursePageNumberPagination, CourseLimitOffsetPagination, CourseCursorPagination
第四のステップ
カスタム仕上げ設定(インターフェイス以下同じことがページャを用いて構成することができる)
pagination_class = CoursePageNumberPagination
pagination_class = CourseLimitOffsetPagination
pagination_class = CourseCursorPagination
並び替えフィルター
Djangoのフィルタプラグインのインストール
あなたはインストールする必要がdjango-filter
プラグイン
pip install django-filter
書き換え内ジャンゴ・フィルタをdjango
し、フロントと別の分類のスクリーニングはまた前とソートの分離の終了後に行うことができませんいずれかの後端手段。rest_framework
filter
フィルタを使用して分類
最初のステップ
インストールdjango-filter
モジュール
第2段
のガイドパッケージ
from django_filters.rest_framework import DjangoFilterBackend
ステップ
の設定分類フィルタ
filter_backends = [DjangoFilterBackend,]
第四のステップの
構成分類フィールド(テーブルをシリアル化する必要があり、いくつかのフィールドが外部キーフィールドであってもよいです)
filter_fields = ['course_category']
第五工程の
要求リンクスタイル
http://127.0.0.1:8080?course_category=2
間隔フィルタのフィルタ
基づいて、django-filter
プラグイン、(通常はデジタルフィールドに)スクリーニング指定セクションを完了する
最初のステップ
を作成するには、以下のフォルダを作成したアプリでfilters.py
気軽にファイル名を
第二の工程
の所望のモジュールの導入
from django_filters.rest_framework.filterset import FilterSet
from django_filters.rest_framework import filters
継承FilterSet
書き換えライトシーケンスクラスに似て
NumberFilter
:データ型フィルタを提供し、そこに対応するデータの多くの種類である
lte
以下:
gte
:以上
field_name
:分類部とすることができる指定されたフィールドは、シーケンスでなければなりません順にクラスフィールド
コード:
from django_filters.rest_framework.filterset import FilterSet
from django_filters.rest_framework import filters
from . import models
class CourseFilterSet(FilterSet):
# 价格小于指定价格(lte)
max_price = filters.NumberFilter(field_name='price', lookup_expr='lte')
# 价格大于指定价格(gte)
min_price = filters.NumberFilter(field_name='price', lookup_expr='gte')
class Meta:
model = models.Course
fields = ['price', 'max_price', 'min_price']
第三ステップ
のガイドパケット
from django_filters.rest_framework import DjangoFilterBackend
輸入カスタムクラス分類フィルタの
from .filters import CourseFilterSet
設定フィルタクラスの
filter_backends = [DjangoFilterBackend]
設定
filter_fields = ['course_category']
-私たちが書くdjango_filterヘルプ
filter_class = CourseFilterSet
-私たち自身の自己分類定義されたフィルタ