Django Restframework 过滤器
一、基本配置:
1、安装:pip install django-filter
2、将 django_filters 配置到INSTALLED-APPS中
3、对 REST_FRAMEWORK 配置:
REST_FRAMEWORK = {
"DEFAULT_FILTER_BACKENDS":("django_filters.rest_framework.DjangoFilterBackend",)
}
二、基本过滤器的使用
from django_filters.rest_framework.DjangoFilterBackend
在对应的View中添加配置
class GoodLists(mixins.ListModelMixin, viewset.GenericViewSet):
...
# 使用过滤器
filter_backends = (DjangoFilterBackend,)
# 定义需要过滤的字段
filter_fields = ("name", "price")
三、自定义过滤器
1、创建一个filter.py文件
import django_filters
from django.db.models import Q
from .model import Goods
class GoodsFilter(django_filters.rest_framework.FilterSet):
pricemin = django_filters.NumberFilter(name = "shop_price", lookup_expr = "gte")
pricemax = django_fliters.NumberFilter(name = "shop_price", lookup_expr = "lte")
name = django_filters.CharFilter(name = "name", lookup_expr = "icontains")
top_category = django_fllters.NumberFilter(name = "category", method = "get_top_category")
def get_top_category(self, queryset, name, value):
return queryset.filter(Q(category_id = value) | Q(category_parent_category_id = value))
class Meta:
model = Goods
fields = ["pricemin", "pricemax", "name"]
2、在视图中使用自定义过滤器
from .filter import GoodsFilter
class GoodLists(mixins.ListModelMixin, viewsets.GenericViewSet):
...
filter_backends = (DjangoFilterBackends, filter.SearchFilter, filter.OrderingFilter) # SearchFilter:搜索过滤器,OrderingFilter:排序过滤器
filter_fields = ("name", "shop_price")
# 自定义过滤器的使用
filter_class = GoodsFilter
search_fields = ("name", "good_brief") # 搜索的内容包含在name中,或者包含在商品描述中
ordering_fields = ("sold_num", "shop_price") # 排序
Django Restframework 过滤器的更多相关文章
- django: rest-framework的 分页和过滤
django: rest-framework的 分页和过滤 2018年06月28日 10:09:01 weixin_42359464 阅读数:136 标签: flaskrestframeworkdja ...
- django restframework serializer 增加自定义字段
在使用django restframework serializer 序列化在django中定义的model时,有时候我们需要额外在serializer中增加一些model中没有的字段.有两种方法实现 ...
- Django自定义过滤器中is_safe和need_autoescape两个参数的理解
自定义template过滤器的方法参考文档,不再赘述 is_safe 文档说明过滤的两种最终形态,其中一种是设置register.filter(is_safe=True),但是对is_safe的具体作 ...
- django restframework
一.django restframework 请求流程源码剖析 上面的认证一个流程是rest_framework的关于APIauth的认证流程,,这个流程试用权限.频率.版本.认证.这个四个组件都是通 ...
- django restframework jwt
既然要来学习jwt(json web token),那么我们肯定是先要了解jwt的优势以及应用场景--跨域认证. $ pip install djangorestframework-jwt 传统coo ...
- Django模板过滤器详解
Django 模板过滤器也是我们在以后基于 Django 网站开发过程中会经常遇到的,如显示格式的转换.判断处理等.以下是 Django 过滤器列表,希望对为大家的开发带来一些方便. 一.形式:小写 ...
- django restframework 快速入门
django restframework 快速入门 基本流程 建立 Models 依靠 Serialiers 将数据库取出的数据 Parse 为 API 的数据(可用于返回给客户端,也可用于浏览器显示 ...
- Django Restframework 实践(一)
具备以下知识: django http://www.cnblogs.com/menkeyi/p/5882464.html http://www.cnblogs.com/menkeyi/p/588245 ...
- django safe 过滤器--不对字符串进行转义(转)
unix下的binutils短小精悍,用胶水(俺经常成管道为胶水)紧密结合在一起释放巨大的能量.django的过滤器也学习了这个方式,每个版本的django都自带了一些builtin的filter,当 ...
随机推荐
- 在Windows服务中托管 ASP.NET Core的坑
按照官网教程 https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/windows-service?view=aspnetcore- ...
- 【Linux高频命令专题(24)】grep
简述 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则 ...
- SQL中常用日期函数
--1 GETDATE() 返回当前系统日期SELECT GETDATE() --2 DATEADD(日期部分,常数,日期) 返回将日期的指定日期部分加常数后的结果返回 日期部分可以是: --常数为正 ...
- C#核心基础--浅谈类和对象的概念
浅谈类和对象的概念 一.什么是类?什么是对象? 学习一门面向对象编程语言,我们必须得知道什么是类?什么是对象? 类(Class)实际上是对某种类型的对象定义变量和方法的原型.它表示对现实生活中一类具有 ...
- Oracle EBS when-validate-record 个性化无效果
在对FORM进行个性化时,针对对应块添加 when-validate-record ,结果做实验的时候无效果. 原因: FORM 中对应的 BLOCK 没有 when-validate-record ...
- Linux 小知识翻译 - 「动态DNS」(DDNS)
这次聊聊「动态DNS」. DNS上周已经介绍过了,就是提供主机名和IP地址对应关系的结构.「动态DNS」是对主机名和IP地址的对应关系提供动态管理的结构. 以前的DNS没有考虑IP地址变化的情况.但是 ...
- MySQL 目录结构、配置文件、修改密码
查看全局数据文件路径 show global variables like "%datadir%" 一.文件目录结构 文件安装路径为F:/JJ/MYSQL-5.6.42-WINX6 ...
- 寒假训练——搜索 K - Cycle
A tournament is a directed graph without self-loops in which every pair of vertexes is connected by ...
- cookie 处理 以及模拟登陆
cookie的处理 1.手动处理: cookie封装到headers 2.自动处理: 1.获取一个session对象 2.使用session对象进行请求的发送 3.作用:在使用session进行请求发 ...
- Django-rest-framework 接口实现 权限:(Permission)
权限:(Permission) rest_framework 中 已经定义好了 权限 在 from rest_framework.permissions 中查看所有的权限 from rest_fram ...