django-rest-framework过滤器的使用(三)
2017-12-22 19:40
651 查看
一、django-rest-frameword
过滤器的认识
主要分三类,官网文档1、基本过滤器
2、搜索
3、排序
二、基本的配置
1、安装pip install django-filter
2、把
django_filters注册到
app中
3、对
REST_FRAMEWORK基本配置
# REST_FRAMEWORK的配置 REST_FRAMEWORK = { # 分页显示 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination', 'PAGE_SIZE': 10, # 配置过滤 'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',) }
三、基本过滤器的使用(精确查找)
1、在视图层使用from django_filters.rest_framework import DjangoFilterBackend class GoodListViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): queryset = Goods.objects.all() serializer_class = GoodsSerializersModel # 使用过滤器 filter_backends = (DjangoFilterBackend,) # 定义需要使用过滤器的字段 filter_fields = ('name', 'market_price')
2、别的保持不变
四、自己定义一个过滤器
有时候需要在过滤器中写上业务逻辑,就需要自己写一个过滤器1、自创建一个
filter.py文件
import django_filters from .models import Goods class GoodsFilter(django_filters.rest_framework.FilterSet): """ 自定义过滤类 """ price_min = django_filters.NumberFilter(name='shop_price', lookup_expr='gte') price_max = django_filters.NumberFilter(name='shop_price', lookup_expr='lte') class Meta: model = Goods fields = ['price_min', 'price_max']
2、在视图中使用过滤器
from .filters import GoodsFilter class GoodListViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): queryset = Goods.objects.all() serializer_class = GoodsSerializersModel # 使用过滤器 filter_backends = (DjangoFilterBackend,) # 定义需要使用过滤器的字段 # filter_fields = ('name', 'market_price') filter_class = GoodsFilter
六、搜索功能
1、自己定义搜索的class GoodsFilter(django_filters.rest_framework.FilterSet): """ 自定义过滤类 """ price_min = django_filters.NumberFilter(name='shop_price', lookup_expr='gte') price_max = django_filters.NumberFilter(name='shop_price', lookup_expr='lte') """ icontains前面的i表示忽视大小写 """ name =django_filters.CharFilter(name='name', lookup_expr='icontains') class Meta: model = Goods fields = ['price_min', 'price_max', 'name']
2、使用自带的过滤器
from rest_framework import status, mixins, generics, viewsets,filters class GoodListViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): queryset = Goods.objects.all() serializer_class = GoodsSerializersModel # 使用过滤器 filter_backends = (filters.SearchFilter,) # 定义搜索的字段 search_fields = ('name',)
3、搜索的限制
^name开头匹配
=name完全匹配
name$表示以什么结尾
七、排序
1、使用class GoodListViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): queryset = Goods.objects.all() serializer_class = GoodsSerializersModel # 使用过滤器 filter_backends = (filters.OrderingFilter,) # 排序的字段 ordering_fields = ('add_time','goods_num')
相关文章推荐
- django-rest-framework 使用例子
- Django-rest-framework中过滤器的定制
- django使用rest_framework API认证
- django使用rest_framework
- Django REST Framework(一) 初步使用
- Django 之REST framework学习:解析器parser的使用
- django rest framework使用django-filter
- 学习使用"Django REST framework"打造RESTful API接口——第一节 quickstart
- django-rest-framework序列化的使用(一)
- 使用Django rest framework api时,客户端返回结果为html标签
- django-rest-framework视图层的使用(二)
- Django-Rest-Framework 教程: 3. 使用 class based views
- django-rest-framework第一次使用使用常见问题
- Django REST framework笔记一之简易JsonAPI搭建(可使用)
- django 中api使用之django-rest-framework
- Django之REST_framework 框架基本组件使用
- RuntimeError at /jwt-auth django rest_framework
- djangorestframework安装
- python django rest framework Authentication & Permissions
- django-rest-framework指南(2):Requests and Responses