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