django rest framework使用django-filter用法


Posted in Python onJuly 15, 2020

django rest framework使用django-filter注意事项:

一定要在setting文件里面加载如下代码,而不是只安装包,否则django应用不报错,但是不能正确过滤。

“`
INSTALLED_APPS = [
‘django_filters'
]

REST_FRAMEWORK = {
‘DEFAULT_FILTER_BACKENDS': ( ‘django_filters.rest_framework.DjangoFilterBackend',
),
}

补充知识:rest_framework--filters和django-filters混合使用-过滤搜索

view

from rest_framework.pagination import PageNumberPagination
from rest_framework import mixins
from rest_framework import viewsets
from rest_framework import filters

from django_filters.rest_framework import DjangoFilterBackend

from .models import Goods
from .serializers import GoodsSerializer
# 导入过滤器类
from .filters import GoodsFilter

class GoodsPagination(PageNumberPagination):
  page_size = 10
  page_size_query_param = "page_size"
  page_query_param = "p"
  max_page_size = 100

class GoodsListViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
  # 指定queryset
  queryset = Goods.objects.all()

  # 指定序列化类
  serializer_class = GoodsSerializer

  # 指定分页类
  pagination_class = GoodsPagination

  # 添加过滤器 这里可以吧django-filter过滤器添加进来 和 rest_framework的filters添加进来一起用, 也可以单个用, 看你的需求
  filter_backends = [DjangoFilterBackend, filters.SearchFilter]

  # 只需要简单的基于等同的过滤,则可以filter_fields在视图或视图集上设置属性,列出要过滤的字段集。
  # 等同就是根据你过滤的字段的数据必须跟数据库里那个字段的数据相同
  # filter_fields = ['name', 'shop_price']

  # 指定过滤器类
  filter_class = GoodsFilter

  search_fields = ['name', 'goods_brief', "goods_desc"]

过滤器类?根据自己需求定义

import django_filters

from .models import Goods

class GoodsFilter(django_filters.rest_framework.FilterSet):
  """
  商品的过滤类
  """

  # 大于这个值 name指定字段 lookup_expr过滤条件
  # NumberFilter 数字类型
  price_min = django_filters.NumberFilter(name="shop_price", lookup_expr="gte")
  # 小于这个值
  price_max = django_filters.NumberFilter(name="shop_price", lookup_expr="lte")

  # name模糊查询, 不指定过滤条件, 必须全部匹配
  # CharFilter字符串类型
  name = django_filters.CharFilter(name="name", lookup_expr="icontains")

  class Meta:
    # 指定模型类
    model = Goods
    # 显示这两个字段
    fields = ["price_min", "price_max", "name"]

settings

INSTALLED_APPS = [
  # drf过滤器 也 是xadmin的过滤器
  'django_filters',
  'rest_framework',
]

url

from django.conf.urls import url, include

from rest_framework.routers import DefaultRouter

from goods.views import GoodsListViewSet
# 生成一个注册器实例对象
router = DefaultRouter()
# 将需要自动生成url的接口注册
# 配置goods的url
router.register(r'goods', GoodsListViewSet, base_name="goods-list")

urlpatterns = [
  # 自动生成url
  url(r"^", include(router.urls)),
]

效果图

django rest framework使用django-filter用法

以上这篇django rest framework使用django-filter用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中暂存上传图片的方法
Feb 18 Python
python实现数独算法实例
Jun 09 Python
浅谈使用Python变量时要避免的3个错误
Oct 30 Python
Python实现购物车功能的方法分析
Nov 10 Python
python如何爬取个性签名
Jun 19 Python
几行Python代码爬取3000+上市公司的信息
Jan 24 Python
python如何实现代码检查
Jun 28 Python
Python搭建代理IP池实现存储IP的方法
Oct 27 Python
python 读取数据库并绘图的实例
Dec 03 Python
快速一键生成Python爬虫请求头
Mar 04 Python
一些让Python代码简洁的实用技巧总结
Aug 23 Python
Python数据可视化之Seaborn的安装及使用
Apr 19 Python
Django REST 异常处理详解
Jul 15 #Python
使用OpenCV实现道路车辆计数的使用方法
Jul 15 #Python
django restframework serializer 增加自定义字段操作
Jul 15 #Python
浅谈django不使用restframework自定义接口与使用的区别
Jul 15 #Python
浅析Python 条件控制语句
Jul 15 #Python
python中如何设置代码自动提示
Jul 15 #Python
PyTorch实现重写/改写Dataset并载入Dataloader
Jul 14 #Python
You might like
php操作excel文件 基于phpexcel
2010/07/02 PHP
PHP遍历某个目录下的所有文件和子文件夹的实现代码
2013/06/28 PHP
19个Android常用工具类汇总
2014/12/30 PHP
PHP实现的mongoDB数据库操作类完整实例
2018/04/10 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
CentOS7编译安装php7.1的教程详解
2019/04/18 PHP
JavaScript 学习笔记之一jQuery写法图片等比缩放以及预加载
2012/06/28 Javascript
基于JavaScript 数据类型之Boolean类型分析介绍
2013/04/19 Javascript
jQuery 关于伪类选择符的使用说明
2013/04/24 Javascript
超炫的jquery仿flash导航栏特效
2014/11/11 Javascript
jQuery实现的导航下拉菜单效果
2016/07/04 Javascript
jquery实现的回旋滚动效果完整实例【附demo源码下载】
2016/09/20 Javascript
JavaScript获取tr td 的三种方式全面总结(推荐)
2017/08/15 Javascript
jQuery实现每日秒杀商品倒计时功能
2019/09/06 jQuery
小程序如何支持使用 async/await详解
2019/09/12 Javascript
[45:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第二场 6.2
2018/06/04 DOTA
python2.6.6如何升级到python2.7.14
2018/04/08 Python
对python模块中多个类的用法详解
2019/01/10 Python
WxPython建立批量录入框窗口
2019/02/27 Python
windows环境中利用celery实现简单任务队列过程解析
2019/11/29 Python
基于PyTorch的permute和reshape/view的区别介绍
2020/06/18 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
2021/01/28 Python
html5实现多文件的上传示例代码
2014/02/13 HTML / CSS
KARATOV珠宝在线商店:俄罗斯珠宝品牌
2019/03/13 全球购物
大学生就业自荐信
2013/10/26 职场文书
应届毕业生求职信范文
2013/12/18 职场文书
小学毕业感言300字
2014/02/19 职场文书
安全环保演讲稿
2014/08/28 职场文书
群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
异地年检委托书范本
2014/09/24 职场文书
2014年食品安全工作总结
2014/12/04 职场文书
总账会计岗位职责
2015/04/02 职场文书
幼儿园开学家长寄语(2015秋季)
2015/05/27 职场文书
付款证明格式范文
2015/06/19 职场文书
干部培训简讯
2015/07/20 职场文书
Windows server 2012搭建FTP服务器
2022/04/29 Servers