django 分页器和过滤器的介绍

1.过滤器

过滤器就是过滤出字段中符合要求的数据;方便我们查找

下面我们来认识几种过滤器吧!

一.    # 全局过滤  {可以对所有的数据进行过滤精准过滤}
    # 指明过滤字段 有两种写法 列表和元祖形式
    # 列表
class App1(viewsets.ModelViewSet):
    queryset = Brand.objects.all()
    serializer_class = Z
    filter_fields = ['bname']
    # 元祖(只有一个数据要加逗号)
    # filter_fields = ('name',)

二.在局部设置


导包
from django_filters.rest_framework import DjangoFilterBackend


    # 局部过滤
class App1(viewsets.ModelViewSet):
    queryset = Brand.objects.all()
    serializer_class = Z
    filter_backends = (DjangoFilterBackend,)
    filter_fiels = ('bname',)

三.模糊查询.

1.

导包
from rest_framework.filters import SearchFilter


3.在试图使用
 #  模糊查询
class App1(viewsets.ModelViewSet):
    queryset = Brand.objects.all()
    serializer_class = Z
    # filter_backends = [SearchFilter]
    # search_fields = ('bname',)

4.

                                             自定义过滤器
(相当于模糊查询,他不是精准的)
条件:    (只有当视图继承视图集;或者混类视图的时候才可以使用自定义过滤器)


1.
# 配置过滤器
REST_FRAMEWORK = {
    'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend',
                                'rest_framework.filters.SearchFilter']
}


2.创建过滤器文件 创建类

import django_filters
from  myapp.models import People
class Caetes(django_filters.rest_framework.FilterSet):
    # field_name要过滤的字段  lookup_expr='startswith' 以xxx开始
    name = django_filters.CharFilter(field_name='name',lookup_expr='startswith')

    class Meta:
        # 关联的表 --- 模型类
        model = People
        fields = ['name']

在视图里写


3.# 导入自定义过滤器(从glq过滤器文件里导入类)


from myapp.glq import Caetes

 # 使用自定义过滤器
    filter_class = Caetes

                                                                                 分页器

                                   分页数据过多一次显示不好看,我们可以用分页器,分几次显示

分页

1.全局设置

                  # 全局配置分页信息
REST_FRAMEWORK={
    # '键':'值'
    # default_pagination_class
    # 全局配置
    'DEFAULT_PAGINATION_CLASS':'rest_framework.pagination.PageNumberPagination',
    # 每一页显示跳数据(主表从表都可以用)
    'PAGE_SIZE':1
}


2.局部设置


# 导包
from rest_framework.pagination import PageNumberPagination


# 自定义分页器类(局部设置)
class FenYe(PageNumberPagination):
    # 每一页显示几条数据
    page_size = 1


对指定数据使用分页器
class App1(viewsets.ModelViewSet):
    queryset = Brand.objects.all()
    serializer_class = Z
    # 使用分页器
    pagination_class = FenYe

 


版权声明:本文为sdsdvsdvs原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。