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,当 ...
随机推荐
- html留言功能
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- IO Redirect 与 Pipe
对于任何一个进程,在启动时,都会打开三个流:stdin(标准输入), stdout(标准输出), stderr(标准错误输出).Stdout,stderr是process与Display之间,stdi ...
- C#批量向数据库插入数据
程序中,批量插入数据有两种思路. 1.用for循环,一条一条的插入,经实测,这种方式太慢了(插入一万条数据至少都需要6-7秒),因为每次插入都要打开数据库连接,执行sql,关闭连接,显然这种方式不可行 ...
- Java学习笔记--Cglib动态代理
CGLib动态代理 使用JDK创建代理有一个限制,即它只能为接口创建代理实例,这一点可以从Proxy的接口方法newProxyInstance(ClassLoader loader,Class[] i ...
- 基于python的Selenium使用小结
之前介绍过基于Unittest和TestNG自动化测试框架,然而基于Web端的测试的基础框架是需要Selenium做主要支撑的,这里边给大家介绍下Web测试核心之基于Python的Selenium 一 ...
- 【English】20190307
appropriate for 适用[əˈpropriɪt fɔr] appropriate for many business applications:
- 【技术与商业案例解读笔记】095:Google大数据三驾马车笔记
1.谷歌三驾马车地位 [关键词]开启时代,指明方向 聊起大数据,我们通常言必称谷歌,谷歌有“三驾马车”:谷歌文件系统(GFS).MapReduce和BigTable.谷歌的“三驾马车”开启了大数据时 ...
- 浅谈javascript的Touch事件
js的touch事件,一般用于移动端的触屏滑动 代码如下: $(function(){ document.addEventListener("touchmove", _touch, ...
- MySQL高级知识(四)——Explain
前言:explain(执行计划),使用explain关键字可以模拟优化器执行sql查询语句,从而知道MySQL是如何处理sql语句.explain主要用于分析查询语句或表结构的性能瓶颈. 注:本系列随 ...
- Loj#6183. 看无可看
Loj#6183. 看无可看 题目描述 首先用特征根求出通项公式\(A_n=p\cdot 3^n+q\cdot(-1)^n\).通过给定的\(f_0,f_1\)可以解出\(p,q\). 然后我们要求的 ...