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 07 Python
Python的函数的一些高阶特性
Apr 27 Python
Python读写配置文件的方法
Jun 03 Python
python简单文本处理的方法
Jul 10 Python
python3 图片referer防盗链的实现方法
Mar 12 Python
opencv转换颜色空间更改图片背景
Aug 20 Python
Python整数与Numpy数据溢出问题解决
Sep 11 Python
python 普通克里金(Kriging)法的实现
Dec 19 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
May 09 Python
python里的单引号和双引号的有什么作用
Jun 17 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
Dec 22 Python
Python还能这么玩之用Python做个小游戏的外挂
Jun 04 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
mysql下创建字段并设置主键的php代码
2010/05/16 PHP
PHP版本如何选择?应该使用哪个版本?
2015/05/13 PHP
PHP用户验证和标签推荐的简单使用
2016/10/31 PHP
CentOS 上搭建 PHP7 开发测试环境
2017/02/26 PHP
jquery中ajax调用json数据的使用说明
2011/03/17 Javascript
JQuery.ajax传递中文参数的解决方法 推荐
2011/03/28 Javascript
鼠标经过tr时,改变tr当前背景颜色
2014/01/13 Javascript
理运用命名空间让js不产生冲突避免全局变量的泛滥
2014/06/15 Javascript
nodejs实现黑名单中间件设计
2014/06/17 NodeJs
JavaScript中的console.log()函数详细介绍
2014/12/29 Javascript
Node.js开发之访问Redis数据库教程
2015/01/14 Javascript
jQuery前端分页示例分享
2015/02/10 Javascript
JQuery动态添加Select的Option元素实现方法
2016/08/29 Javascript
js中编码函数:escape,encodeURI与encodeURIComponent详解
2017/03/21 Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
2017/12/06 jQuery
微信小程序wx.getImageInfo()如何获取图片信息
2018/01/26 Javascript
JS实现的碰撞检测与周期移动完整示例
2019/09/02 Javascript
file-loader打包图片文件时路径错误输出为[object-module]的解决方法
2020/01/03 Javascript
如何搭建一个完整的Vue3.0+ts的项目步骤
2020/10/18 Javascript
[03:33]TI9战队采访 - Infamous
2019/08/20 DOTA
[03:40]DOTA2抗疫特别篇《英雄年代》
2020/02/28 DOTA
Python基于回溯法子集树模板实现图的遍历功能示例
2017/09/05 Python
flask框架中勾子函数的使用详解
2018/08/01 Python
python爬取cnvd漏洞库信息的实例
2019/02/14 Python
Python将json文件写入ES数据库的方法
2019/04/10 Python
PyTorch基本数据类型(一)
2019/05/22 Python
python求加权平均值的实例(附纯python写法)
2019/08/22 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
2020/07/05 Python
美国一家主营日韩美妆护肤品的在线商店:iMomoko
2016/09/11 全球购物
美国性感内衣店:Yandy
2018/06/12 全球购物
服务标兵事迹材料
2014/05/04 职场文书
2014年作风建设剖析材料
2014/10/23 职场文书
2015年社会实践个人总结
2015/03/06 职场文书
小学六一儿童节活动总结
2015/05/05 职场文书
Nginx 过滤静态资源文件的访问日志的实现
2021/03/31 Servers
Html5新增了哪些功能
2021/04/16 HTML / CSS