在写后端api时,经常需要使用各种过滤条件,可以使用Q对查询集进行过滤,这里介绍一个新玩意儿

以下是基础文档

https://django-filter.readthedocs.io/en/master/index.html

过滤条件:

https://blog.csdn.net/chen1042246612/article/details/84071139

以django自带的用户类为例

serializers.py

from rest_framework import serializers

class UserSerializer(serializers.Serializer):
"""
用户序列化类
"""
id = serializers.IntegerField()
username = serializers.CharField()

  

users/filters.py

import django_filters  # 导入过滤器,需要先pip安装
from django.contrib.auth import get_user_model User = get_user_model() # user model class UserFilter(django_filters.FilterSet):
# 过滤username参数,精确过滤, lookup_expr='contains'为模糊查询,
# 默认大小写敏感,可以加i让其大小写不敏感
username = django_filters.CharFilter(name="username", lookup_expr='contains') class Meta:
model = User
fields = ['username']

  

views.py

from rest_framework import viewsets
from django.contrib.auth import get_user_model
User = get_user_model() from .serializers import UserSerializer
from .filters import UserFilter
class UserViewset(viewsets.ReadOnlyModelViewSet):
"""
retrieve:
返回指定用户信息
list:
返回用户列表
"""
queryset = User.objects.all()
serializer_class = UserSerializer
filter_class = UserFilter
filter_fields = ("username",)

  

DRF教程8-过滤的更多相关文章

  1. DRF内置过滤组件与排序组件结合使用

    DRF内置过滤组件Filtering DRF提供了内置过滤组件Filtering,可以结合url路径的改变获取想要的数据,当然用户不可能在url访问路径中自己设置过滤条件,肯定是后端开发人员将前端页面 ...

  2. drf 教程

    1, 序列化 Serialization 创建一个新环境 在做其他事之前,我们会用virtualenv创建一个新的虚拟环境.这将确保我们的包配置与我们正在工作的其他项目完全隔离. virtualenv ...

  3. DRF教程7-token认证

    Authentication 认证是将一个传入的请求和一组标识凭据相关联的机制,比如请求过来的用户,或者用户登录时携带的token. 然后权限策略就能使用这些凭据来决定是否允许这个请求. REST框架 ...

  4. DRF教程9-权限

    permissions.py源码分析 SAFE_METHODS = ('GET', 'HEAD', 'OPTIONS') #GET请求,HEAD获取头部信息,OPTIONS获取可用请求类型设置为安全方 ...

  5. DRF教程6-分页

    rest框架提供自定义分页样式,让你修改再每个页面上显示多少条数据, pagination API 可以: 分页链接作为响应内容的一部分 分页链接包含在响应头里,比如Content-Range or  ...

  6. DRF教程5-API接口文档和接口测试

    配置 配置好,就可以访问web页面 pip install coreapi #安装依赖 from rest_framework.documentation import include_docs_ur ...

  7. DRF教程4-视图集和路由类

    rest框架包括一个处理viewset的抽象,允许开发人员集中精力处理api交互和建模,url构造都根据常见方式自动处理. ViewSet类 几乎和VIew类一样,不过它提供read,update这样 ...

  8. DRF教程3-类视图

    Rewriting our API using class-based views 使用类视图重写root views,只需要一点点重构. from django.http import Http40 ...

  9. DRF教程2-请求和响应

    Request objects REST framework中有一个Request对象,是HttpRequest的扩展,提供了新的请求解析,Request的核心功能就是request.data,它和r ...

随机推荐

  1. BZOJ 1641 [Usaco2007 Nov]Cow Hurdles 奶牛跨栏:新版floyd【路径上最大边最小】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1641 题意: 给你一个有向图,n个点(n <= 300),m条边,边权为h[i]. ...

  2. Java丨DBCP连接池完整配置

    <!-- 数据源1 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicData ...

  3. ACM学习历程—BestCoder 2015百度之星资格赛1002 列变位法解密(vector容器)

    Problem Description 列变位法是古典密码算法中变位加密的一种方法,具体过程如下 将明文字符分割成个数固定的分组(如5个一组,5即为密钥),按一组一行的次序整齐排列,最后不足一组不放置 ...

  4. 使用webdriver出现的问题:[18796:1808:0730/131103.313:ERROR:install_util.cc(600)] Failed to read HKLM\SOFTWARE\Policies\Google\Chrome\MachineLevelUserCloudPolicyEnrollmentToken: 系统找不到指定的文件。 (0x2) DevTools lis

    1.注册表导致 [5956:4996:0710/155156.898:ERROR:install_util.cc(589)] Unable to create registry key HKLM\SO ...

  5. Happy Great BG-卡精度

    Happy Great BG Time Limit: 2000ms Case Time Limit: 2000ms Memory Limit: 65536KB   64-bit integer IO ...

  6. Oracle字段增删改方法总结

    一.修改字段的语法:alter table tablename modify (字段名 类型 [default value][null/not null],….);有一个表名为tb,字段段名为name ...

  7. Oracle获取日期的特定部分

    (1)oracle中extract()函数从oracle 9i中引入,用于从一个date或者interval类型中截取到特定的部分 ,语法:extract ({ year | month | day ...

  8. webAPP meta 标签大全

    1.先说说mate标签里的viewport: viewport即可视区域,对于桌面浏览器而言,viewport指的就是除去所有工具栏.状态栏.滚动条等等之后用于看网页的区域.对于传统WEB页面来说,9 ...

  9. Servlet拦截方式

    Servlet拦截方式 1.拦截固定后缀的url,比如设置为 *.do.*.action, 例如:/user/add.action 此方法最简单,不会导致静态资源(jpg,js,css)被拦截. 2. ...

  10. pythonDB api的学习

    有时候需要操作数据库,为了能使用统一的接口访问,我们采用Python DB API,地址为 https://www.python.org/dev/peps/pep-0249/ 全文参考---“疯狂的蚂 ...