
需要修改Django的全局配置文件 settings.py
在文件最后添加
REST_FRAMEWORK = {
#全局分页
# 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
# 'PAGE_SIZE': 2 #每页展示几条数据
}
drf局部分页设置
在指定的视图类里添加局部分页
class Goodset(ModelViewSet):
queryset = Goods.objects.all() #查询集
serializer_class = Goodsser #序列化器
#局部分页
# pagination_class = PageNumberPagination #全局分页的'PAGE_SIZE': 2 不能注释
#也可以在网址后边加 /?page=2&size=2 查询第2页,每页2条的英雄信息
自定义分页
#导包
from rest_framework.pagination import PageNumberPagination
#自定义分页类
class pagiation(PageNumberPagination):
max_page_size = 3 #一页最多显示多少数据
page_size = 2 #默认一页显示多少条数据
page_query_param = 'page' #参数,用于指定第几页
page_size_query_param = 'size' #参数,用于指定一页显示多少条数据
class Goodset(ModelViewSet):
queryset = Goods.objects.all()
serializer_class = Goodsser
#使用自定义分页器进行分页
# pagination_class = pagiation
过滤
安装插件
在黑窗口安装输入
pip install django-filter
在settings.py文件中注册
INSTALLED_APPS = [
…
‘django_filters’,
…
]
在settings.py文件中最后添加
REST_FRAMEWORK = {
#全局过滤 如果用到局部过滤这一代码可以注释
'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend']
}
精准过滤&模糊过滤
精准过滤
FilterSet`将自动为给定的字段创建一个类,并允许您发出如下请求:
http://127.0.0.1:8000/good/?name=可口可乐&kind=1(编号)
#导包
from django_filters.rest_framework import DjangoFilterBackend
class Goodset(ModelViewSet):
queryset = Goods.objects.all()
serializer_class = Goodsser
#局部过滤
# 1.准确查询
# filter_backends = [DjangoFilterBackend] #指定过滤工具
# filter_fields=['name','kind'] #指定准确查询的字段名
模糊过滤
FilterSet`将自动为给定的字段创建一个类,并允许您发出如下请求:
http://127.0.0.1:8000/good/?max_price=2&good_name=可
#导包
from django_filters.rest_framework import DjangoFilterBackend
import django_filters
#自定义过滤器类
class MyFilter(django_filters.rest_framework.FilterSet):
#价格大于等于等于min_price lte表示小于等于
#NumberFilter对数值类型进行过滤 field_name过滤的字段 lookup_expr过滤的表达式
min_price=django_filters.NumberFilter(field_name='price',lookup_expr='get')
max_price=django_filters.NumberFilter(field_name='price',lookup_expr='lte')
#CharFilter 对字符串数据进行过滤
# icontains 表示包含
good_name=django_filters.CharFilter(field_name='name',lookup_expr='icontains')
#元类
class Meta:
model=Goods
fields=['min_price','max_price','good_name']
class Goodset(ModelViewSet):
queryset = Goods.objects.all()
serializer_class = Goodsser
# 2.模糊查询
filter_backends = [DjangoFilterBackend] # 指定过滤工具
filterset_class=MyFilter #指定模糊查询的自定义过滤器
rest_framework的SearchFilter
配置搜索引擎
在settings.py文件中最后添加
REST_FRAMEWORK = {
#全局过滤 如果用到局部过滤这一代码可以注释
'DEFAULT_FILTER_BACKENDS': ['rest_framework.filters.SearchFilter']
}
serch fielter 模糊查询
这将允许客户端通过执行以下查询来过滤列表中的项目:
http://127.0.0.1:8000/good/?search=可 1
#导包
from rest_framework.filters import SearchFilter
class Goodset(ModelViewSet):
queryset = Goods.objects.all()
serializer_class = Goodsser
# 3.serch fielter 模糊查询
filter_backends = {SearchFilter} #指定过滤工具
#如果使用外键字段进行搜索,使用外键__外键字段 进行指定
search_fields=['name','kind__id']
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)