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简单实现的代理服务器端口映射功能示例
Apr 08 Python
Python OpenCV处理图像之图像直方图和反向投影
Jul 10 Python
python+selenium实现自动化百度搜索关键词
Jun 03 Python
使用python实现离散时间傅里叶变换的方法
Sep 02 Python
wxPython:python首选的GUI库实例分享
Oct 05 Python
PyQt5多线程刷新界面防假死示例
Dec 13 Python
用python爬取历史天气数据的方法示例
Dec 30 Python
Python生成词云的实现代码
Jan 14 Python
Django 项目通过加载不同env文件来区分不同环境
Feb 17 Python
Python3实现打印任意宽度的菱形代码
Apr 12 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
Jun 09 Python
python读取excel数据并且画图的实现示例
Feb 08 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 获取客户端的真实ip
2009/11/30 PHP
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
2012/06/13 PHP
PHP随机生成唯一HASH值自定义函数
2015/04/20 PHP
php数组生成html下拉列表的方法
2015/07/20 PHP
php htmlentities()函数的定义和用法
2016/05/13 PHP
Windows2003下php5.4安装配置教程(Apache2.4)
2016/06/30 PHP
PHP简单创建压缩图的方法
2016/08/24 PHP
Laravel如何友好的修改.env配置文件详解
2017/06/07 PHP
JS查看对象功能代码
2008/04/25 Javascript
浅析Js中的单引号与双引号问题
2013/11/06 Javascript
jquery中常用的函数和属性详细解析
2014/03/07 Javascript
JavaScript的this关键字的理解
2016/06/18 Javascript
微信小程序媒体组件详解(视频,音乐,图片)
2017/09/19 Javascript
Vue 将后台传过来的带html字段的字符串转换为 HTML
2018/03/29 Javascript
如何基于vue-cli3.0构建功能完善的移动端架子
2019/04/24 Javascript
JS+CSS实现炫酷光感效果
2020/09/05 Javascript
python基础教程之面向对象的一些概念
2014/08/29 Python
利用matplotlib+numpy绘制多种绘图的方法实例
2017/05/03 Python
django js实现部分页面刷新的示例代码
2018/05/28 Python
Python音频操作工具PyAudio上手教程详解
2019/06/26 Python
利用anaconda作为python的依赖库管理方法
2019/08/13 Python
python数据处理——对pandas进行数据变频或插值实例
2020/04/22 Python
Spark处理数据排序问题如何避免OOM
2020/05/21 Python
有750多个顶级品牌的瑞士时尚在线:ABOUT YOU
2017/01/04 全球购物
英国最大的女性服装零售商:Dorothy Perkins
2017/03/30 全球购物
美国嘻哈文化生活方式品牌:GLD
2018/04/15 全球购物
电气工程及其自动化学生实习自我鉴定
2013/09/19 职场文书
商务英语专业自荐信
2013/10/14 职场文书
酒店总经理职务说明书
2014/02/26 职场文书
优秀驾驶员先进事迹材料
2014/05/04 职场文书
交通事故协议书范文
2014/10/23 职场文书
老员工辞职信范文
2015/05/12 职场文书
2016年全国爱眼日宣传教育活动总结
2016/04/05 职场文书
python 模拟在天空中放风筝的示例代码
2021/04/21 Python
Python字符串对齐方法使用(ljust()、rjust()和center())
2021/04/26 Python
Python 中 Shutil 模块详情
2021/11/11 Python