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,当 ...
随机推荐
- RMAN restore fails with ORA-01180: can not create datafile 1
最近在验证.测试备份有效性时,遇到了"ORA-01180: can not create datafile 1"这个错误,顺便结合metalink的官方文档"RMAN ...
- MongoDB添加仲裁节点报错replica set IDs do not match办法
背景:由于历史原因,某个MongoDB副本集只有一主一从双节点,无法满足自动故障转移要求,需要配置一个仲裁节点. 原有节点192.168.10.20:27017,192.168.10.21:27017 ...
- c/c++ allocator 使用
allocator 使用 作用:只开辟空间,不调用构造函数 操作一览表 allocator<T> a 定义一个名为a的allocator对象,它可以为类型为T的对象分配内存 a.alloc ...
- logstash配置
input { #You must define a [type], otherwise you cannot get a field to cut. tcp { port => 5045 ty ...
- June 12. 2018 Week 24th. Tuesday
Just be yourself because you are unique and you will shine. 每个人都是独一无二的,做好你自己,你也能够光芒四射. From What a G ...
- Python Numpy-基础教程
目录 1. 为什么要学习numpy? 2. Numpy基本用法 2.1. 创建np.ndarry 2.2. Indexing and Slicing Boolean Index 2.3. Univer ...
- Django Form和ModelForm组件
Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...
- InfluxDB部署
InfluxDB介绍 官网:https://www.influxdata.com/ 文档:https://docs.influxdata.com/influxdb/v1.2/introduction/ ...
- es6拼接字符串``
不需要任何的加号和引号,全部字符仅仅由一组``符号包裹即可,而放置动态数据或者变量即用${变量}方式即可, 看着是真的一目了然啊,最主要是终于可以摆脱被拼接字符支配的恐惧了,哈哈哈哈.
- (转)Spring Boot(八):RabbitMQ 详解
http://www.ityouknow.com/springboot/2016/11/30/spring-boot-rabbitMQ.html RabbitMQ 即一个消息队列,主要是用来实现应用程 ...