美文网首页
day50-restframework总结及数据过滤

day50-restframework总结及数据过滤

作者: barriers | 来源:发表于2019-01-12 23:53 被阅读0次

to_representation 修改序列化的值
get_queryset 过滤信息
get_object 获取过滤数据

1 手动添加字段条件过滤

在视图文件下(views.py文件)

class StuView(viewsets.GenericViewSet,
          mixins.ListModelMixin, # 查看所有资源,GET
          mixins.RetrieveModelMixin, # 查看指定id的资源 ,GET
          mixins.DestroyModelMixin, # 删除指定的资源 ,DELETE
          mixins.CreateModelMixin, # 创建资源 ,POST
          mixins.UpdateModelMixin): # 修改资源 ,PUT/PATCH
    queryset = Student.objects.all()#指定资源返回的内容
    serializer_class = StuSerializer# 资源(queryset)序列化的结果
    filter_class = StuFilter  运用自己定义的过滤类对数据进行过滤
    def get_queryset(self):
        queryset = self.queryset
        s_name = self.request.query_params.get('s_name')
        if s_name:
               获取未被删除且名字中含有输入的字的人
            result = queryset.filter(is_delete=0, s_name__contains=s_name)
        else:
            result = queryset.filter(is_delete=0)
        return result

2引入第三方库进行过滤

在定义过滤信息前需要在settings中添加相关设置

'DEFAULT_FILTER_BACKENDS': (
    'django_filters.rest_framework.DjangoFilterBackend',
)

然后在当前应用下新建一个filters.py文件,在这个文件中写过滤信息

import django_filters
from app.models import Student
class StuFilter(django_filters.rest_framework.FilterSet):
    # 引入第三方库进行过滤定义过滤类
    # 指定模糊查询过滤的字段
    name = django_filters.CharFilter('s_name', lookup_expr='contains')
    前面的name为浏览器请求中问号后传的参,后面为数据库中的字段
    # 不加lookup_expr = 'contains'就是精确查询,加就是模糊查询
    age0 = django_filters.CharFilter('s_age', lookup_expr='gt')
    age1 = django_filters.CharFilter('s_age', lookup_expr='lt')
    上面的过滤条件既可以只过滤一条,也可以同时过滤上面的几个
    class Meta:
        model = Student
        fields = ['name', 'age0', 'age1']

在上面的name = django_filters.CharFilter('s_name', lookup_expr='contains')语句中,前面的name为浏览器请求中问号后传的参,后面为数据库中的字段;不加lookup_expr = 'contains'就是精确查询,加就是模糊查询
上面的过滤条件如果只传了一个参数就只过滤一条,如果传了多个参数就过滤多个对应的信息

3安装toolbar测试工具

先安装库:pip install django-debug-toolbar
然后在settings中ALLOWED_HOSTS后面添加INTERNAL_IPS = ("127.0.0.1",)(添加测试ip)
中间件中添加中间件:'debug_toolbar.middleware.DebugToolbarMiddleware', # 添加debug中间件
添加应用:'debug_toolbar.apps.DebugToolbarConfig',
工程路由文件最后添加:

if DEBUG:
    import debug_toolbar
    urlpatterns.append(re_path(r'^__debug__/', include(debug_toolbar.urls)))

相关文章

  • day50-restframework总结及数据过滤

    to_representation 修改序列化的值get_queryset 过滤信息get_object 获取过滤...

  • angular中的过滤器

    过滤器(filter) 格式化数据 过滤数据(filter) limitTo orderBy 及 json 在js...

  • javascript开发框架-pTemplateJs

    pTemplateJs,前端开发框架。 模板及灵活的语法、数据绑定、数据过滤、事件控制、条件及列表渲染、样式控制、...

  • 5.5 数据预处理

    数据预处理包括对收集的数据进行数据缺失处理、检测和过滤异常值及移除重复数据等步骤。 5.5.1 数据缺失处理 数据...

  • 2019-02-19

    fastp—数据过滤&质控 一、fastp的安装及使用 1)conda安装:conda install fastp...

  • js筛选相似数据

    比较两条数据的函数: 在antd表格里面可以加入过滤,实现筛选相似数据(相同的数字有四个及以上的及为相似)

  • 过滤器

    ...过滤器分为全局过滤器和局部过滤器全局过滤器的格式:html:{{数据,全局过滤器的名字}}//解析数据js:...

  • 前嗅ForeSpider脚本教程:数据过滤脚本

    数据过滤脚本与数据抽取脚本并列的脚本,它的作用是对抽取的数据进行过滤。 注意:一旦有了数据过滤脚本则数据抽取脚本将...

  • linux命令grep、sed

    linux命令grep、sea grep:文本过滤工具 功能说明: 从文本文件或管道数据流中筛选匹配的行及数据。 ...

  • 2021-05-23 批量下载sra文件及转换为fastq

    数据下载 数据转换 数据质控 数据过滤

网友评论

      本文标题:day50-restframework总结及数据过滤

      本文链接:https://www.haomeiwen.com/subject/gsuhdqtx.html