一.过滤

1.首先引用diango 自带的过滤配置

2.导入模块

from django_filters.rest_framework import DjangoFilterBackend
from django_filters import rest_framework as filters

3.一种简单的过滤:

class BookView(ModelViewSet):
queryset = Book.objects.all()
serializer_class = BookSerializer filter_backends = (DjangoFilterBackend,)
filter_fields = ('title', 'price')

通过在浏览器后面带上?price=100, 就可以精确过滤

自定义过滤

通过自己创建的过滤类来实现自定义过滤

class ProductFilter(filters.FilterSet):
# 最小
min_price = filters.NumberFilter(field_name="price", lookup_expr="gte")
# 最大
max_price = filters.NumberFilter(field_name="price", lookup_expr="lte")
# 包含
name = filters.CharFilter(field_name="title", lookup_expr="icontains")
# 通过?字段自定义过滤
class Meta:
model = Book
fields = ["min_price", "max_price", "name"]

BookViews

class BookView(ModelViewSet):
queryset = Book.objects.all()
serializer_class = BookSerializer filter_backends = (DjangoFilterBackend,)
# 自定义过滤类
filter_class = ProductFilter

LimitOffset分页

引入模块

from rest_framework.pagination import LimitOffsetPagination

输入代码

class P1(LimitOffsetPagination):
max_limit =
default_limit =
# 从offset开始访问的下几个
limit_query_param = "limit"
# 定义从表中的offset开始计算
offset_query_param = "offset" class IndexView2(APIView):
def get(self, request, *args, **kwargs):
user_list = Book.objects.all()
p1=P1()
page_user_list = p1.paginate_queryset(queryset=user_list, request=request, view=self)
print("打印的数据", page_user_list)
ser = BookSerializer(instance=page_user_list, many=True)
# return Response(ser.data)
# 自带分页
return p1.get_paginated_response(ser.data) class BookView(ModelViewSet):
queryset = Book.objects.all()
serializer_class = BookSerializer filter_backends = (DjangoFilterBackend,)
# 自定义过滤类
filter_class = ProductFilter filter_fields = ('title', 'price')
# pagination_class = MyPageNumberPagination # authentication_classes = [UserAuth]
# permission_classes = [UserPerm]

最新文章

  1. JSON字符串和Dictionary字典类型的相互转换
  2. iOS 推送所调用的函数详解
  3. Hadoop: MapReduce2的几个基本示例
  4. CRM 2016 级联过滤
  5. 一些值得学习和借鉴的.Net 开源项目
  6. 【web JSP basePath】basePath的含义
  7. js 作为属性的变量
  8. Html5/Css3 向下兼容placeholder
  9. 【HTML+CSS】浅谈:相对定位与绝对定位
  10. c++ containers
  11. 解析JSON、扩展Fiddler
  12. Java程序员入门:Java程序员面试失败的5大原因
  13. MVC异步加载学习笔记
  14. hover变化图片
  15. Codeforces 558E A Simple Task (计数排序&&线段树优化)
  16. ubuntu制作离线包
  17. appJSON["window"]["navigationBarTextStyle"] 字段需为 black 或 white
  18. LeetCode算法扫题系列83
  19. python serial 模块使用
  20. sklearn countvectorizer坑

热门文章

  1. BASIC合集
  2. LeetCode 动态规划
  3. 【Eureka篇三】Eureka服务发现(4)
  4. shell的几个实战脚本例子(欠)
  5. SVN 中项目名字全是红色 和 文件夹图标上没标记绿钩解决办法
  6. JVMTIAgent
  7. Paper | BLIND QUALITY ASSESSMENT OF COMPRESSED IMAGES VIA PSEUDO STRUCTURAL SIMILARITY
  8. 剑指offer:二叉搜索树的第k个结点(中序遍历)
  9. Java连载1-概述&常用的dos命令
  10. http状态码大全(404、505、502,500)