django rest framework使用django-filter用法
作者:子如川 发布时间:2023-03-06 01:56:06
标签:django,rest,framework,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)),
]
效果图
来源:https://blog.csdn.net/huyi91/article/details/77623709
0
投稿
猜你喜欢
- 在实际的工作和学习中,许多人的SQL Server 2005数据库日志文件可能会发生损坏,例如硬件故障、计算机非正常重启或关机等等。在SQL
- 本文实例讲述了python处理csv数据的方法。分享给大家供大家参考。具体如下:Python代码:#coding=utf-8__author
- 前言终于下定决心学习Python了。既然从头开始,就需要认认真真。首先需要说的是,我是初学Python,这篇文章只是用于展示global和n
- 在有些使用 javascript 来渲染数据的时候,为了能动态获取不同的数据,并且保持 javascript&
- 1、卓越亚马逊的首页轮换图片,每刷新一次,都是随机不同的顺序显示,这样的设计解决了对于较多图片轮换而靠后的图片信息很少被看到的问题,这点对于
- 很多年前,我们就可以轻易的从很多国营商场、火车车厢、饭馆旅馆中看到墙上挂的那个小本本-意见薄,作为经营方与顾客沟通的
- js模拟随机抽奖程序代码!相关文章推荐:随机6+1选号码摇奖程序 <html><title>模拟抽奖-asp之家&l
- 什么是CSS裸奔节?CSS裸奔节就是将这整站的css样式都去掉,这样所有的布局,颜色,背景什么的就都没有了(除非你使用table布局),只剩
- 企业管理器中没有改数据库名的功能,如果一定要用企业管理器来实现,你可以备份数据库,然后还原,在还原时候可以指定另一个库名,然后再删除旧库就行
- 第一次见到《Web标准和SEO应用实践》是在我们UCD书友会《设计沟通十器》新书发布现场,机械工业出版社的朋友还带了很多相关新书过来,当时本
- 自己写的方法,适用于linux,#!/usr/bin/python#coding=utf-8import sysimport os, os.
- package work;import java.io.BufferedReader;import java.io.IOException;
- SQL Server数据库查询速度慢的原因有很多,常见的有以下几种:1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)
- 一些大型站点都有着非常一流的视觉外观,它们很可能在设计时使用了网格系统。网格可以是页面布局显得紧凑而且稳定,为设计师在设计站点时提供一个逻辑
- 查看逻辑读前10的SQL:set linesize 300;set pagesize 300;set long 50000;SELECT *
- 这里我们在SQL Server 2005\SQL Server 2008版本上通过举例子,说明临时表和表变量两者的一些特征,让我们对临时表和
- 简单邮件传输协议(SMTP)是一种协议,用于处理在电子邮件服务器之间发送电子邮件和路由电子邮件。Python提供了smtplib模块,该模块
- 如何显示一个文本文件?完整显示文本文件的代码如下: Write(STRING) WriteLine(STRING) WriteBlan
- 如何正确显示数据库里同时存在的GB码和BIG5码? Public Function CheckBIG(strS
- '/***' 作 者 :冻结回忆'修改时间:2007-10-17'功能说明