从 URL 获取查询参数 function getParameterByName(name, url) { if (!...url) url = window.location.href; name = name.replace(/[\[\]]/g, "\\$&"); var...&]" + name + "(=([^]*)|&|#|$)"), results = regex.exec(url); if (!
作者:HelloGitHub-追梦人物 大多数情况下,开发的接口都不是给开发这个接口的人用的,所以如果没有接口文档,别人就无法知道有哪些接口可以调用,即使知道了接口的 URL,也很难知道接口需要哪些参数...接收的参数(包括 URL 中的路径参数、查询参数;HTTP 请求头的参数;HTTP 请求体等参数)。 接口返回的内容。...查询过滤参数也是可以这样设置的,例如先来看一下 GET /posts/ 的参数: 可以看到用来过滤文章列表的参数都没有说明,这些字段都定义在 PostFilter 中,我们来改一下代码,添加必要的说明信息后再去文档中看看效果吧...先来看 GET /posts/archive/dates/,它对应的 action 是 list_archive_dates,由于 action 默认会从它所在的视图集中继承一些属性,而 drf-yasg...但是 drf-yasg 还是不够聪明,当它去解析列表接口可能的参数时,顺便又把 PostFilter 中的字段也一并解析了,这是用来过滤博客文章的,显然不能用于过滤评论列表,我们需要将这些无关参数移除,
DRF框架中的英文单词 1. prefix/'prifɪks/前缀,我们在路由配置的时候经常看见这个单词。在flask中,我们可以在设置url的时候为了区别视图,在类似功能的url全部加一个前缀。...4. filter/'fɪltɚ/过滤,我们在DRF框架的高级功能中,就有过滤这一项。可以在url地址中传参数,我们进行过滤。 5....18. urlpatterns这其实不是一个单词,我们只是将url和patterns(模式)组合了一下。我们用来表示路由的url的路由列表。但是pattern在计算机中通常用来表示模式。 19....20. model/'mɑdl/模型,我们在很多的时候都用到了这个单词,在DRF框架我们在下面的情况中用到了这个单词。指明该序列化器处理的数据字段从模型类BookInfo参考生成。...32. router/'rʊtɚ/路由器,我们指的可不是路由器了,它指的也不是视图函数,而是封装了视图函数和请求的url的映射关系的一个东西。 33.
django-rest-framework 将常用 HTTP 请求的状态码常数预定义 status 模块里,使用预定义的变量而不是直接使用数字的好处一是增强代码可读性,二是减少硬编码。...对于这样的场景,我们可以在请求 API 时加上查询参数,django-rest-framework 解析查询参数,然后从全部文章列表中过滤出查询所指定的文章列表再返回。...,而 DjangoFilterBackend 会依据 filterset_class(这里是 PostFilter)中定义的过滤规则来过滤查询结果集。...可以看到右上角多了个过滤器(红框圈出部分)。 点击会弹出过滤参数输入的交互面板,在这里可以交互式地输入查询过滤参数的值。...例如选择如下的过滤参数,得到查询的 URL 为: http://127.0.0.1:10000/api/posts/?
Django REST framework (DRF) 是一个强大而灵活的工具包,用于构建Web API,特别是基于Django的应用程序。...版本控制:讨论DRF中实现API版本控制的方法,如URL路径版本、请求头版本等。...分页、过滤与排序分页(Pagination):解释如何启用分页,选择合适的分页类(如PageNumberPagination、LimitOffsetPagination),并设置分页参数。...过滤(Filtering):介绍使用django-filter库或内置filterset_fields实现资源过滤。排序(Sorting):讲解如何启用排序功能,允许客户端通过查询参数指定排序字段。...对于复杂查询,考虑使用Django ORM的查询优化技巧或添加数据库索引。
二、DRF实现商品列表页 Django Restful framework简称DRF,可以查看官方文档https://www.django-rest-framework.org/,从官方文档可以看到,Django...request.query_params代替了request.GET,有助于使代码库更加正确和明显,任何HTTP方法类型都可以包括查询参数,而不仅仅是GET请求。...2.DRF过滤器 DRF提供了过滤功能,来实现简单高效的过滤。...搜索的使用 DRF的SearchFilter类基于Django-admin的搜索功能,支持简单的基于单个查询参数的搜索。...排序的使用 一般需要对商品根据销量、价格等排序,通常使用DRF的OrderingFilter类,它支持简单的查询参数控制的结果排序。
代表一个资源,一个资源应该是一个名词 动作有HTTP的methode方法提供 URL应该包含版本信息,版本信息也可以放在HTTP协议中 过滤信息,使用URL的参数代表过滤 返回值: 每一个返回代码都有具体特定含义...实验步骤 创建project DRF2 创建app MySer settingsserializer的类型的参数 read_only: 仅用于序列化输出 write_only: 反序列化输入 required...构造方法 Serializer(instance=None, data=empty, **kwarg) 反序列化 验证 is_valid: 验证数据是否合法,返回boolean 在使用从外部传入的数据之前...,必须使用此函数进行验证 如果验证失败,返回数据错误异常 validated_data: 经过验证后的数据,存入此结构 视图 DRF的视图从处理任务,处理流程等跟Django基本一致 此视图基本是django...- lookup_field:查询条件字段,默认为pk - get_queryset: 返回查询结果集集合,经常需要重写 - get_serializer_class:
并不是说你错,在这件事上你占理,这件事你想的没错,只是它不值得你去花费如此多的精力罢了。...) c.过滤参数可以放在查询字符串中; d.响应数据返回&响应状态码;(200获取或修改成功/201新增成功/204删除成功/404资源不存在/400客户端请求有误/500服务器错误) e.响应数据格式...数据库查询 属性: queryset(指定视图所使用的查询集) 方法: get_queryset返回视图所使用的查询集 get_object从视图所使用的查询集中查询指定的对象,默认根据pk进行查询。...其他功能 过滤、分类 通常GenericAPIView配合Mixin扩展类进行使用 5.5.2.3Mixin扩展类 DRF框架提供了5个扩展类,封装了通用增删改查的流程。...过滤:需要先安装django-filter并进行注册设置,再在视图中通过 filter_fields设置过滤字段。
elif self.action == 'latest': # 返回latest操作所使用的查询集 else: # 返回其他操作所使用的查询集 2.路由...urlpatterns += router.urls 注意点: 指定Router生成视图集处理函数url配置项时,提取的参数正则表达式。...pass 7.过滤 对于列表数据可能需要根据字段进行过滤,我们可以通过添加django-fitlter扩展来增强支持。...8.1使用方法: 在类视图中设置filter_backends,使用 rest_framework.filters.OrderingFilter过滤器,REST framework会在请求的查询字符串参数中检查是否包含了...ordering参数,如果包含了ordering参数,则按照ordering参数指明的排序字段对数据集进行排序。
群查之搜索过滤组件 群查之排序过滤组件 基础分页组件 偏移分页器 自定义过滤器 游标分页器(了解) Django过滤器插件 django-filter重点使用方法 drf...7)慢查询日志分析web界面。...主要来做分类查询,上面所写的都是模糊查询,没有精确到分类。...大总结 接口 """ 1、什么是接口:url+请求参数+响应数据 | 接口文档 2、接口规范: url:https,api,资源(名词复数),v1,get|post表示操作资源的方式,?...过滤条件 响应数据:status,msg,results|data,url资源数据 """ DRF入门 """ 1、封装风格 2、请求生命周期:走APIView的as_view => View
常用属性: request.data:返回POST提交的数据,与request.POST类似 request.query_params:返回GET URL参数,与request.GET类似 浏览器get...JWT 与普通Token一样,都是访问资源的令牌,区别是普通Token服务端验证token信息要查询数据库验证,JWT验证token信息不用查询数据库,只需要在服务端使用密钥效验。...与普通Token一样,都是访问资源的令牌,区别是普通Token服务端验证token信息要查询数据库验证,JWT验证token信息不用查询数据库,只需要在服务端使用密钥效验。...全局urls.py配置认证接口URL: django_drf/urls.py from django.contrib import admin from django.urls import path...sex=%E7%94%B7 搜索和排序 DRF提供过滤器帮助我们快速对字段进行搜索和排序 继续修改app视图中新增过滤字段: myapp/views.py from rest_framework.viewsets
api/Person/4 HTTP/1.1 X-HTTP-Method-Override: PUT 上面代码中,X-HTTP-Method-Override指定本次请求的方法是PUT,而不是...比如,/articles这个 URL 就是正确的,而下面的 URL 不是名词,所以都是错误的。...2.6 过滤信息(filtering,或称查询参数) 如果记录数量很多,服务器不可能都将它们返回给用户。API应该提供参数,过滤返回结果。 下面是一些常见的参数。 ?...animal_type_id=1:指定筛选条件 参数的设计允许存在冗余,即允许API路径和URL参数偶尔有重复。比如,GET /zoo/ID/animals 与 GET /animals?...更好的做法是,除了第一级,其他级别都用查询字符串表达。 GET /authors/12?categories=2 下面是另一个例子,查询已发布的文章。你可能会设计成下面的 URL。
ordering=title 过滤器 所谓过滤其实就是在API请求的时候加上一些参数,限制返回的结果,比如只查询id为1的书本信息,或者查询id大于2小于5的书本信息。...name=袁隆平 虽然这种方法很简单就能实现过滤的功能,但是也如上面的两个例子展示的那样,只能实现很简单的过滤,在过滤的时候必须明确地指定需要过滤的参数和对应的值,没办法搜索一个范围,比如我想搜索id...而且对于诸如时间这样的数据类型,这种简单的过滤器也只能按照字符串处理,而不能按照时间格式来处理。 高级应用 过滤器的高级应用需要配置多种数据类型的处理方式和自定义一个过滤器类。...title__startswith=天 过滤器的高级使用基本就是这样 分页 分页其实就是把数据库中的数据分批返回给请求者,而不是一次性把所有的数据都返回给请求者,这样容易出问题,比如数据库中商品表有一千万条数据...PNPG class PageNumberPagination(PNPG): ''' 自定义分页类 ''' page_query_param = 'page' # 前端查询某一页的参数名
Django REST Framework支持自动生成OpenAPI schemas,但是目前支持的不是非常完善,需要手动修改的地方过多。...经过上面的基本配置,我们现在访问api/schema/swagger-ui/来查看swagger-ui风格的文档,如下所示: 当你点击schema的时候,就会显示响应字段的描述,而且会明确告知你,描述是从XXX...title是来自于字段的label,带有*的意味着是必传的字段,除此之外,字段的其它描述是直接取自序列化器字段中的参数。...参数,是默认没有描述的。...= 'id' lookup_url_description = '书籍id' 上面这里方法和属性来自于下面的导入操作: from drf_spectacular.utils import extend_schema
补充知识点: 1.类视图对象有一个属性: self.kwargs,它是一个字典,保存的是从url地址中提取的所有命名参数。...它的作用:比如我们定义了一个视图,没有形参接收传递的参数,那么我们可以使用 self.kwargs从url地址中提取我们需要的数据。...get_object从视图所使用的查询集中查询指定的对象,默认根据pk(查询)进行查询。...其他功能: a)过滤 b)分页 补充知识点: 查询的时候我们想不根据主键pk查询,而是根据我们的需求查,那么可以根据修改 lookup_field(值改为我们要查询的字段的名称)的值来解决需求。...lookup_url_kwarg指定从查询集获取对象时,从url地址中提取的参数的名称。 注意:经常配合Minxin扩展类来使用。
serializers.ModelSerializer): class Meta: model = User fields = ['id', 'username', 'email']在上面的示例中,我们从rest_framework...generics.ListAPIView): queryset = User.objects.all() serializer_class = UserSerializer在上面的示例中,我们从rest_framework...我们指定了我们想要返回的所有用户的查询集,并指定了用于序列化数据的序列化器。创建路由路由是将URL映射到视图的一种机制。在DRF中,我们可以使用Django的URLConf和DRF的路由器来定义路由。...下面是一个简单的路由器示例,用于将URL /users/ 映射到UserList视图:from django.urls import pathfrom .views import UserListurlpatterns...上面的示例只是DRF的入门示例。DRF有很多其他功能,例如身份验证、权限管理、限速、过滤、分页等等。您可以在DRF的官方文档中找到所有这些功能的详细信息。
前言 在管理后台查询的时候,经常有需要查询包含某个内容,按时间段查询,或者商品价格大于多少,小于多少各种查询条件。 django-filter 过滤器专门解决这种查询的问题。...python:3.5、3.6、3.7、3.8 django:2.2、3.0、3.1 DRF : 3.10+ 简单入门 Django-filter 提供了一种基于用户提供的参数过滤查询集的简单方法。...要按request对象过滤主查询集,只需覆盖该 FilterSet.qs属性。...如果传递了一个可调用对象,它将以 request 为唯一参数进行调用 。这允许您执行相同类型的基于请求的过滤,而无需求助于覆盖FilterSet....过滤器查找类型“精确”是隐式默认值,因此永远不会添加到过滤器名称中。在上面的示例中,发布日期的确切过滤器是`release_date`,而不是`release_date__exact`。
接口分页效果 我们可以看到接口返回的信息还包含了前一页和后一页的 url 是不是很人性化 接口数据多条件筛选 目前我们的接口要查找特定的信息只能通过 id 来查找,这肯定是不够完善的,这部分将设置接口的多条件查询...但是有个问题就是只能精确查询才可以,如果你输入的参数不完整,就查询不到,接下来,我们尝试着完成模糊查询。...类来写 class PostFilter(django_filters.rest_framework.FilterSet): # 定义进行过滤的参数,CharFilter 是过滤参数的类型,过滤器参数类型还有很多...,其中筛选的参数在前面设置了筛选条件,则根据筛选条件来执行, # 如果为指定筛选条件,则按照精确查询来执行 class Meta: model = Post...绑定我们自己的认证类即可返回我们需要的字段值啦~ DRF 的基本内容到这边也基本结束了,希望你能有所收获。
同样的,DRF对外操作的其他接口,如查询,修改操作,就不允许找到已经软删除的数据。 自带的Admin 既然是超级管理后台,那么就允许操作任何数据,包括已经软删除的,而不是列表找不到软删除的数据。...简而言之: drf找不到删除的数据,admin需要全部数据 drf和admin删除数据都是软删除 解决方案 DRF Django Manager 赋予了 Django的模型(Model)中操作数据库的能力...,我们还需要将接口删除的操作,进行软删除,而不是真删除。...即: drf找不到删除的数据 drf执行删除是软删除 Admin 首先再刚刚代码基础上,我们启用Admin,进入后台看看效果。...可以发现,由于模型Manager的加持,直接把is_deleted的数据一并过滤了。但是我们并不想如此。 所以第一反应,就是去注册模型的地方,重写模型的查询。
如果您要覆盖视图方法,请务必调用get_queryset()而不是直接访问此属性。 serializer_class 应该用于验证和反序列化输入以及序列化输出的序列化器类。...lookup_url_kwarg 应该用于对象查找的 URL 关键字参数。URL conf 应包含与此值对应的关键字参数。如果未设置,则默认使用lookup_field....过滤 filter_backends 应用于过滤查询集的过滤器后端类列表。默认值与DEFAULT_FILTER_BACKENDS设置相同。...详情视图使用 get_object(self) 返回详情视图所需的模型类数据对象,默认使用lookup_field参数来过滤queryset。 在视图中可以调用该方法获取详情信息的模型类对象。...是相同的,而后面的查询一条数据详情,修改一条已有数据,删除一条数据的URL是相同的。”
领取专属 10元无门槛券
手把手带您无忧上云