当前位置: 首页 > news >正文

新塘网站设计/软件推广平台有哪些?哪个比较好

新塘网站设计,软件推广平台有哪些?哪个比较好,基于php房产网站开发,3g手机网站建设文章目录一、普通过滤1.针对当前用户进行筛选2.针对网址进行筛选3.针对查询参数进行筛选二、通用过滤1.全局设置2.视图设置3.简单过滤4.搜索器过滤4.1 多字段查找4.2 多字段查找4.3 嵌套查找4.4 参数说明4.5 自定义过滤器一、普通过滤 REST 框架的通用列表视图的默认行为是返回…

文章目录

  • 一、普通过滤
    • 1.针对当前用户进行筛选
    • 2.针对网址进行筛选
    • 3.针对查询参数进行筛选
  • 二、通用过滤
    • 1.全局设置
    • 2.视图设置
    • 3.简单过滤
    • 4.搜索器过滤
      • 4.1 多字段查找
      • 4.2 多字段查找
      • 4.3 嵌套查找
      • 4.4 参数说明
      • 4.5 自定义过滤器


一、普通过滤

REST 框架的通用列表视图的默认行为是返回模型管理器的整个查询集。通常,您希望 API 限制查询集返回的项目。

筛选子类的任何视图的查询集的最简单方法是重写该方法。GenericAPIView.get_queryset()

重写此方法允许您以多种不同的方式自定义视图返回的查询集。

1.针对当前用户进行筛选

您可能希望筛选查询集,以确保仅返回与发出请求的当前经过身份验证的用户相关的结果。

为此,可以基于用户值进行筛选。request.user

例如:

from myapp.models import Purchase
from myapp.serializers import PurchaseSerializer
from rest_framework import genericsclass PurchaseList(generics.ListAPIView):serializer_class = PurchaseSerializerdef get_queryset(self):"""This view should return a list of all the purchasesfor the currently authenticated user."""user = self.request.userreturn Purchase.objects.filter(purchaser=user)

2.针对网址进行筛选

一种筛选方式可能涉及根据 URL 的某些部分限制查询集。

例如,如果您的 URL 配置包含如下条目:

re_path('^purchases/(?P<username>.+)/$', PurchaseList.as_view()),

然后,您可以编写一个视图,返回按 URL 的用户名部分筛选查询集:

class PurchaseList(generics.ListAPIView):serializer_class = PurchaseSerializerdef get_queryset(self):"""This view should return a list of all the purchases forthe user as determined by the username portion of the URL."""username = self.kwargs['username']return Purchase.objects.filter(purchaser__username=username)

3.针对查询参数进行筛选

筛选初始查询集的最后一个示例是根据 url 中的查询参数确定初始查询集。

我们可以覆盖以处理 URL,例如 ,并且仅当参数包含在 URL 中时才筛选查询集:

class PurchaseList(generics.ListAPIView):serializer_class = PurchaseSerializerdef get_queryset(self):"""Optionally restricts the returned purchases to a given user,by filtering against a `username` query parameter in the URL."""queryset = Purchase.objects.all()username = self.request.query_params.get('username')if username is not None:queryset = queryset.filter(purchaser__username=username)return queryset

二、通用过滤

除了能够重写默认查询集之外,REST 框架还包括对通用筛选后端的支持,这些后端允许您轻松构造复杂的搜索和筛选器。

通用筛选器还可以在可浏览 API 和管理 API 中显示为 HTML 控件。

安装对应的包:pip install django-filter

1.全局设置

INSTALLED_APPS = [...'django_filters',...
]
REST_FRAMEWORK = {'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend']
}

2.视图设置

from django_filters.rest_framework import DjangoFilterBackendclass UserListView(generics.ListAPIView):...filter_backends = [DjangoFilterBackend]

3.简单过滤

class ProductList(generics.ListAPIView):queryset = Product.objects.all()serializer_class = ProductSerializerfilter_backends = [DjangoFilterBackend]filterset_fields = ['category', 'in_stock']
http://example.com/api/products?category=clothing&in_stock=True

4.搜索器过滤

4.1 多字段查找

仅当视图具有属性集时,才会应用该类。该属性应是模型上文本类型字段的名称列表,例如

from rest_framework import filtersclass UserListView(generics.ListAPIView):queryset = User.objects.all()serializer_class = UserSerializerfilter_backends = [filters.SearchFilter]search_fields = ['username', 'email']
http://example.com/api/users?search=russell

4.2 多字段查找

还可以使用查找 API 双下划线表示法对 ForeignKey 或 ManyToManyField 执行相关查找:

search_fields = ['username', 'email', 'profile__profession']

4.3 嵌套查找

对于 JSONField 和 HStoreField 字段,您可以使用相同的双下划线表示法根据数据结构中的嵌套值进行查找:

search_fields = ['data__breed', 'data__owner__other_pets__0__name']

4.4 参数说明

默认情况下,搜索将使用不区分大小写的部分匹配项。搜索参数可能包含多个搜索词,这些搜索词应以空格和/或逗号分隔。如果使用多个搜索词,则仅当所有提供的词都匹配时,才会在列表中返回对象。

搜索行为可能会因在 前面加上各种字符而受到限制。search_fields

  • “^”以搜索开头。
  • “=”完全匹配。
  • “@”全文搜索。(目前只支持Django的PostgreSQL后端。
  • ‘$’ 正则表达式搜索。
search_fields = ['=username', '=email']

4.5 自定义过滤器

默认情况下,搜索参数名为 ,但该设置可能会覆盖该参数。

若要根据请求内容动态更改搜索字段,可以对 函数进行子类化并覆盖该函数。例如,如果查询参数在请求中,则以下子类将仅搜索

from rest_framework import filtersclass CustomSearchFilter(filters.SearchFilter):def get_search_fields(self, view, request):if request.query_params.get('title_only'):return ['title']return super().get_search_fields(view, request)
http://www.lbrq.cn/news/1276633.html

相关文章:

  • 温州小学网站建设/百分百营销软件官网
  • 免费做网站教程/怀柔网站整站优化公司
  • php 中英双语网站源码/网络营销教学网站
  • 潍坊网站建设小程序制作/百度旗下产品
  • 网页设计培训(可0基础)/网站seo运营
  • 一般做网站哪家好/如何刷seo关键词排名
  • 超低价的郑州网站建设/品牌运营策划
  • 如何用爬虫做网站监控/怎么做表格
  • 徐州专业做网站/东莞网络推广托管
  • wordpress 添加文件夹/seo外包如何
  • 福州建设企业网站/seo自学教程推荐
  • 适合35岁女人的培训班/百度热搜关键词排名优化
  • 做网站要搭建什么平台/电商网站平台
  • 网站网页能自己做吗/全国疫情排行榜
  • 免费个人搭建网站/常用网站推广方法及资源
  • 推广营销海外网站/郑州seo顾问热狗
  • wordpress 百度地图xml/类聚seo
  • dreamwearver做网站地图/推广哪个网站好
  • 一个人做公司管理网站/全国疫情的最新数据
  • 如何做百度秒收录网站/b站广告投放平台入口
  • 目前流行的网站开发工具/如何让别人在百度上搜到自己公司
  • 延吉网站建设/深圳市昊客网络科技有限公司
  • 网站建设总做总结/西安网站制作公司
  • 黄浦做网站公司/客服系统网页源码2022免费
  • 给自己的网站做软件测试 步骤/百度公司官网招聘
  • 创建个人网站英文/中国搜索引擎
  • 怎么用dw做动态网站/seo裤子的关键词首页排名有哪些
  • 哪里做网站最好网站/最权威的品牌排行榜网站
  • 表格 wordpress/杭州seo优化公司
  • 同城购物网站怎么做/网页开发需要学什么
  • 什么是数据集成?和数据融合有什么区别?
  • 使用ANSYS Fluent和群体平衡模型对搅拌罐反应器中的气泡动力学进行建模
  • .NET 10 中的新增功能系列文章3—— .NET MAUI 中的新增功能
  • colima 修改镜像源为国内源
  • Unity UI的未来之路:从UGUI到UI Toolkit的架构演进与特性剖析(5)
  • 多模通信·数据采集:AORO P9000U三防平板带来定制化解决方案