博客
关于我
DRF框架(十四)——过滤Filtering,排序
阅读量:705 次
发布时间:2019-03-21

本文共 1501 字,大约阅读时间需要 5 分钟。

Django数据过滤与排序实例详解

在Django开发过程中,对列表数据进行过滤和排序是非常常见的需求。Django REST框架提供了一些强大的工具来实现这一点,以下我们将分享一些实用的配置方法和使用技巧。

一、过滤(Filtering)

当你需要根据特定字段对数据进行过滤时,Django的django-filters扩展会帮到你。通过在项目中安装相应的包,然后在配置文件中进行相应的设置,你可以轻松地对API视图添加过滤功能。

  • 首先,确保django_filters已经安装:
    pip install django-filter
  • 打开你的settings.py文件,找到INSTALLED_APPS数组,添加'django_filters'
    INSTALLED_APPS = [   ...   'django_filters',   ...]
  • 然后在REST_FRAMEWORK配置中启用Django Filter的后端:
    REST_FRAMEWORK = {   'DEFAULT_FILTER_BACKENDS': (      'django_filters.rest_framework.DjangoFilterBackend',   ):}
  • 接下来,设置你的视图类,添加filter_fields属性,指定可以用于过滤的字段。例如,可以指定btitlebread字段:
    class BookListView(ListAPIView):   queryset = BookInfo.objects.all()   serializer_class = BookInfoSerializer   filter_fields = ('btitle', 'bread')
  • 使用时,可以通过URL params来指定过滤条件。例如:
    http://127.0.0.1:8000/books/?btitle=西游记
  • 二、排序(Sorting)

    当你需要对列表数据进行排序时,REST framework提供了OrderingFilter过滤器。以下是如何使用它的步骤:

  • 在你的视图类中,导入OrderingFilter
    from rest_framework.filters import OrderingFilterclass BookListView(ListAPIView):   ...   filter_backends = [OrderingFilter]   ordering_fields = ('id', 'bread', 'bpub_date')
  • 配置ordering_fields,指定需要支持排序的字段。比如,可以指定idbreadbpub_date字段:
    ordering_fields = ('id', 'bread', 'bpub_date')
  • 需要注意的是,排序参数是通过请求的查询字符串传递的,例如:
    http://127.0.0.1:8000/books/?ordering=-bread

    这里的-bread表示以bread字段的降序进行排序。

  • 关键点回顾

    • 过滤:使用filter_fields属性指定要过滤的字段,通过URL参数传递过滤条件。
    • 排序:启用OrderingFilter后,可以通过URL参数指定排序字段和方向,实现自定义排序。
    • 配置文件:需要在settings.py中启用django_filters和相应的REST framework过滤器后端。

    通过以上配置,你可以轻松地对列表数据进行过滤和排序,从而提升API的灵活性和实用性。

    转载地址:http://omsrz.baihongyu.com/

    你可能感兴趣的文章
    TreeSet、TreeMap
    查看>>
    JVM内存模型
    查看>>
    可变长度参数
    查看>>
    3、条件查询
    查看>>
    cordova打包apk更改图标
    查看>>
    GitHub上传时,项目在已有文档时直接push出现错误解决方案
    查看>>
    文件系统的层次结构
    查看>>
    vue(渐进式前端框架)
    查看>>
    vscode设置eslint保存文件时自动修复eslint错误
    查看>>
    Remove Extra one 维护前缀最大最小值
    查看>>
    Linux操作系统的安装与使用
    查看>>
    C++ 继承 详解
    查看>>
    OSPF多区域
    查看>>
    Docker入门之-镜像(二)
    查看>>
    重置UAG Application admin密码
    查看>>
    嵌入式系统试题库(CSU)
    查看>>
    setup facatory9.0打包详细教程(含静默安装和卸载)
    查看>>
    java.security.InvalidKeyException: Illegal key size
    查看>>
    Linux kernel pwn --- CSAW2015 StringIPC
    查看>>
    IDEA 找不到 Persistence窗口解决办法
    查看>>