当前位置:网站首页>第十五单元 分页、过滤
第十五单元 分页、过滤
2022-08-02 14:01:00 【czy1206527605】
一.分页
1.什么是分页
REST框架包括对可定制的分页样式的支持。
分页分为两种情况:
全局分页和局部分页
2.全局分页设置
全局配置信息放在setting里面
REST_FRAMEWORK = {
# 全局分页
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
# 指定分页引擎
'PAGE_SIZE': 2
# 指定页面大小
}
全局&局部分页的使用
http://127.0.0.1:8000/路由名/?page=数字
同时修改前端数据
解析数据后的data后加上.results
3.局部分页设置
导入分页器
from rest_framework.pagination import PageNumberPagination
使用
class GoodView(ModelViewSet):
queryset = Goods.objects.all()
serializer_class = GoodsSerializer
# 局部分页
pagination_class = PageNumberPagination
注意,使用时要把全局分页的
‘DEFAULT_PAGINATION_CLASS’:‘rest_framework.pagination.PageNumberPagination’,
进行注释,保留page行。要不然效果出不来
4.自定义分页器
使用
class GoodView(ModelViewSet):
queryset = Goods.objects.all()
serializer_class = GoodsSerializer
# 使用自定义分页器进行分页
pagination_class = pagination
pagination为自己定义的分页器
自定义分页器
class pagination(PageNumberPagination):
max_page_size = 3 # 一页最多显示多少条数据
page_size = 1 # 默认一页显示多少条数据
page_query_param = 'page' # 参数,用于指定第几页
page_size_query_param = 'size' # 参数,用于指定一夜显示多少条数据
自定义分页器的使用
http://127.0.0.1:8000/路由名/?page=数字&size=数字
page为分几页 size为每页分几条
二.过滤
1.django-filter的精准过滤
使用过滤之前要在setting里进行安装
全局过滤配置
REST_FRAMEWORK = {
'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend']
}
局部精准过滤
1.导包
from django_filters.rest_framework import DjangoFilterBackend
2.使用
class GoodView(ModelViewSet):
queryset = Goods.objects.all()
serializer_class = GoodsSerializer
# 局部过滤
# 1.精准过滤
# filter_backends = [DjangoFilterBackend] # 指定过滤工具
# filter_fields = ['name','kind'] # 指定字段
2.django-filter的模糊过滤
局部模糊过滤
导入
import django_filters
自定义过滤器
class MyFilter(django_filters.rest_framework.FilterSet):
# 价格大于等于min_price
# NumberFilter对数值类型进行过滤 field_name过滤的字段 lookup_expr过滤的表达式
# gte 大于等于 lte 小于等于 icontains 不区分大小写的包含
min_price = django_filters.NumberFilter(field_name='price',lookup_expr='gte')
max_price = django_filters.NumberFilter(field_name='price',lookup_expr='lte')
# CharFilter 对字符串类型数据进行过滤
name = django_filters.CharFilter(field_name='name',lookup_expr='icontains')
# 元类
class Meta:
models = Goods # 指定模型类
fields = ['min_price','max_price','name'] # 指定过滤字段
指定过滤器
# filter_backends = [DjangoFilterBackend]
# filterset_class = MyFilter
3.rest_framework的SearchFilter
全局
setting里过滤引擎配置
REST_FRAMEWORK = {
'DEFAULT_FILTER_BACKENDS': ['rest_framework.filters.SearchFilter']
}
局部
class GoodView(ModelViewSet):
queryset = Goods.objects.all()
serializer_class = GoodsSerializer
filter_backends = [SearchFilter] #指定过滤工具
# 如果需要使用外键字段进行搜索,使用 外键__外键字段 进行指定
search_fields = ['name','kind__id'] # 指定过滤字段 kind__id kind__kind_name
边栏推荐
- 面试官:可以谈谈乐观锁和悲观锁吗
- deal!It's July 30th!
- tinymce 如何实现动态国际化
- 文件加密软件有哪些?保障你的文件安全
- RKMPP 在FFmpeg上实现硬编解码
- 【Tensorflow】AttributeError: '_TfDeviceCaptureOp' object has no attribute '_set_device_from_string'
- 网页设计(新手入门)[通俗易懂]
- Configure zabbix auto-discovery and auto-registration.
- Mysql's case the when you how to use
- 关于市场后市的发展预测? 2021-05-23
猜你喜欢
RKMPP库快速上手--(一)RKMPP功能及使用详解
理解TCP长连接(Keepalive)
Flask项目的完整创建 七牛云与容联云
logback源码阅读(二)日志打印,自定义appender,encoder,pattern,converter
The most complete ever!A collection of 47 common terms of "digital transformation", read it in seconds~
Gstreamer Plugin注册流程详解
Awesome!Alibaba interview reference guide (Songshan version) open source sharing, programmer interview must brush
The bad policy has no long-term impact on the market, and the bull market will continue 2021-05-19
苏州大学:从 PostgreSQL 到 TDengine
How to solve 1045 cannot log in to mysql server
随机推荐
els long block deformation conditions, boundary collision judgment
uview 2.x版本 tabbar在uniapp小程序里头点击两次才能选中图标
瑞吉外卖笔记——第10讲Swagger
目标检测场景SSD-Mobilenetv1-FPN
Interviewer: Can you talk about optimistic locking and pessimistic locking?
RKMPP库快速上手--(一)RKMPP功能及使用详解
网络安全第四次作业
基于深度学习的图像检索方法!
About the development forecast of the market outlook?2021-05-23
微信小程序-最近动态滚动实现
HALCON: 内存管理(Memory Management)
世界上最大的开源基金会 Apache 是如何运作的?
Word | 关于删除分节符(下一页)前面的版式就乱了解决方案
Break the limit of file locks and use storage power to help enterprises grow new momentum
如何解决mysql服务无法启动1069
网络安全第二次作业
C语言提高篇(三)
idea社区版下载安装教程_安装天然气管道的流程
2022-08-02日报:2022年7月最热的10篇AI论文
网页设计(新手入门)[通俗易懂]