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