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进行基础的函数式编程的教程
Mar 31 Python
Python版微信红包分配算法
May 04 Python
python实现机器人行走效果
Jan 29 Python
用python实现百度翻译的示例代码
Mar 09 Python
十分钟利用Python制作属于你自己的个性logo
May 07 Python
python在html中插入简单的代码并加上时间戳的方法
Oct 16 Python
pyinstaller参数介绍以及总结详解
Jul 12 Python
django2笔记之路由path语法的实现
Jul 17 Python
python的scipy实现插值的示例代码
Nov 12 Python
pycharm 中mark directory as exclude的用法详解
Feb 14 Python
python 实现读取csv数据,分类求和 再写进 csv
May 18 Python
详解运行Python的神器Jupyter Notebook
Jun 03 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
require(),include(),require_once()和include_once()区别
2008/03/27 PHP
php的list()的一步操作给一组变量进行赋值的使用
2011/05/18 PHP
利用PHP函数计算中英文字符串长度的方法
2014/11/11 PHP
php从给定url获取文件扩展名的方法
2015/03/14 PHP
php+webSoket实现聊天室示例代码(附源码)
2017/02/17 PHP
jQuery EasyUI API 中文文档 - ValidateBox验证框
2011/10/06 Javascript
jQuery版仿Path菜单效果
2011/12/15 Javascript
使用GruntJS链接与压缩多个JavaScript文件过程详解
2013/08/02 Javascript
JS鼠标滑过图片时切换图片实现思路
2013/09/12 Javascript
jquery.validate.js插件使用经验记录
2014/07/02 Javascript
深入分析jquery解析json数据
2014/12/09 Javascript
基于jQuery+Cookie实现的防止刷新的在线考试倒计时
2015/06/19 Javascript
AngularJs中route的使用方法和配置
2016/02/04 Javascript
JavaScript对象数组排序实例方法浅析
2016/06/15 Javascript
Vue2.0用户权限控制解决方案的示例
2018/02/10 Javascript
利用jquery和BootStrap实现动态滚动条效果
2018/12/03 jQuery
jQuery中DOM操作原则实例分析
2019/08/01 jQuery
微信小程序实现多行文字超出部分省略号显示功能
2019/10/23 Javascript
JavaScript基于面向对象实现的无缝滚动轮播示例
2020/01/17 Javascript
Python的Flask框架中@app.route的用法教程
2015/03/31 Python
windows下Virtualenvwrapper安装教程
2017/12/13 Python
python给微信好友定时推送消息的示例
2019/02/20 Python
numpy中的ndarray方法和属性详解
2019/05/27 Python
如何使用Pytorch搭建模型
2020/10/26 Python
美国中小型企业领先的办公家具供应商:Office Designs
2016/11/26 全球购物
教师求职信范文分享
2013/12/27 职场文书
红旗团支部事迹材料
2014/01/27 职场文书
公司会计主管岗位责任制
2014/03/01 职场文书
小学生竞选班长演讲稿
2014/04/24 职场文书
pytorch训练神经网络爆内存的解决方案
2021/05/22 Python
利用Python判断你的密码难度等级
2021/06/02 Python
SpringCloud Feign请求头删除修改的操作代码
2022/03/20 Java/Android
Java 垃圾回收超详细讲解记忆集和卡表
2022/04/08 Java/Android
请求模块urllib之PYTHON爬虫的基本使用
2022/04/08 Python
Python中的socket网络模块介绍
2022/07/23 Python
源码安装apache脚本部署过程详解
2022/09/23 Servers