django rest framework使用django-filter用法
时间:2022-07-27
本文章向大家介绍django rest framework使用django-filter用法,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
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用法就是小编分享给大家的全部内容了,希望能给大家一个参考。
- JavaScript之apply()和call()的区别
- JavaScript之面向对象学习八(继承)
- JQuery快速入门
- JavaScript之面向对象学习七(动态原型模式、寄生构造函数模式、稳妥构造函数模式创建自定义类型)
- ExtJs学习笔记(16)_Form布局
- JavaScript之面向对象学习六原型模式创建对象的问题,组合使用构造函数模式和原型模式创建对象
- 未来几年苹果公司很可能“不务正业”,进军汽车无人驾驶界
- ExtJs学习笔记(15)_fit布局
- JavaScript之call()和apply()方法详解
- Javascript快速入门(下篇)
- JavaScript引用类型之Array数组的栈方法与队列方法
- ExtJs学习笔记(14)_Column布局
- 高级盲注—floor,rand,group by报错注入
- 刷脸注册、试装、支付……仅靠一张脸就能买买买的时尚店开业了
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- springmvc之如何确定目标方法Pojo类型的参数?
- 【colab pytorch】使用tensorboardcolab可视化
- 实用,完整的HTTP cookie指南
- django-URL之从URL中获取关键字(七)
- springmvc之使用POJO作为参数
- 【猫狗数据集】利用tensorboard可视化训练和测试过程
- springmvc之视图解析流程
- 【猫狗数据集】从命令行接收参数
- django-URL重定向(八)
- Jetpack新成员,App Startup一篇就懂
- python之利用魔术方法实现自己定义的二维向量
- 【猫狗数据集】使用top1和top5准确率衡量模型
- django-URL反向解析Reverse(九)
- spring之如何在web应用中使用?
- 【猫狗数据集】使用预训练的resnet18模型