重写 get_serializer_class和get_queryset,根据不同的操作返回不同的序列化器类和不同的查询集。
Django REST Framework (DRF) 是一个开源的 Web 框架,它建立在 Django 上,可以帮助你轻松地构建 RESTful API。DRF 提供了很多有用的功能,其中之一就是过滤器(filters)。
from rest_framework import views, generics, mixins, viewsets
在做其他事之前,我们会用virtualenv创建一个新的虚拟环境。这将确保我们的包配置与我们正在工作的其他项目完全隔离。
ViewSet视图集类不再实现get()、post()等方法,而是实现动作 action 如 list() 、create() 等。
在 django 博客教程中,我们使用了 django-haystack 和 Elasticsearch 进行文章内容的搜索。django-haystack 默认返回的搜索结果是一个类似于 django QuerySet 的对象,需要配合模板系统使用,因为未被序列化,所以无法直接用于 django-rest-framework 的接口。当然解决方案也很简单,编写相应的序列化器将返回结果序列化就可以了。
Overthinking ruins you. Ruins the situation, twists it around, makes you worry and just makes everything much worse than it actually is.
对于视图集ViewSet,我们除了可以自己手动指明请求方式与视图方法[官方文档中也叫action,动作]之间的对应关系外,还可以使用Routers来帮助我们自动生成路由信息。
Django REST Framework(以下简称DRF)是基于Django框架构建的Web API框架。在DRF中,路由器(Router)是一个非常有用的工具,可以帮助我们轻松地定义API的路由,实现快速、可维护的API开发。
我们的博客有一个侧边栏功能,分别列出博客文章的分类列表、标签列表、归档时间列表,通过点击侧边栏对应的条目,还可以进入相应的页面。例如点击某个分类,博客将跳转到该分类下全部文章列表页面。这些数据的展示都需要开发对应的接口,以便前端调用获取数据。
Django是一个高效、功能强大的Python Web框架,它被广泛用于构建各种规模的Web应用程序。无论是初学者还是有经验的开发人员,都可以从入门到掌握Django的高级技巧。在本指南中,我们将带你逐步了解Django的核心概念和高级功能,通过代码实例和解析来详细说明。
中文翻译版:Django API开发: 使用Python和Django构建web APIs
rest_framework.generics.ListCreateAPIView
DRF是以Django扩展应用的方式提供的,所以我们可以直接利用已有的Django环境而无需从新创建。(若没有Django环境,需要先创建环境安装Django)
此前我们一直在操作博客文章(Post)资源,并借此介绍了序列化器(Serializer)、视图集(Viewset)、路由器(Router)等 django-rest-framework 提供的便利工具,借助这些工具,就可以非常快速地完成 RESTful API 的开发。
在项目开发中,例如web项目的前后端分离开发,需要由前后端相关人员共同定义接口,编写接口文档。之后大家都根据这个接口文档进行开发,到项目结束前都要一直维护。一个好的接口文档能够帮助我们快速上手这类项目、便于阅读已有代码、对接接口自动化测试等等
一个完整的项目,无论是个人的还是公司的,自动化的单元测试是必不可少,否则以后任何的功能改动将成为你的灾难。
REST 框架包括对可自定义分页样式的支持。这允许您修改将大型结果集拆分为各个数据页的方式。
在 Django REST Framework 中,视图集(Viewset)是一种简化了视图函数(View Function)的开发方式,它可以让开发者更快速、更方便地创建 RESTful API。
在实际开发中,我们通常需要对 API 的返回结果进行过滤、排序和分页等操作。在 Django REST Framework 中,我们可以使用过滤器(Filter)来实现这些功能。过滤器可以根据客户端提供的查询参数来对返回结果进行过滤、排序和分页等操作。
目前,用户对于接口的操作基本都需要查询数据库。获取文章列表需要从数据库查询,获取单篇文章需要从数据库查询,获取评论列表也需要查询数据。但是,对于博客中的很多资源来说,在某个时间段内,他们的内容几乎都不会发生更新。例如文章详情,文章发表后,除非对其内容做了修改,否则内容就不会变化。还有评论列表,如果没人发布新评论,评论列表也不会变化。
总结:GenericAPIView就是在APIView基础上额外提供了三个方法和三个类属性,如果不配合视图工具类,则体现不出来优势所在
在 RESTful 架构中,对资源的常规操作无非就是查询、新增、修改、删除等这么几种。为此,django-rest-framework 分别提供了对应通用类视图函数。但是,如果对同一个资源的不同操作逻辑分散在各个视图函数中,从逻辑上来说不太合理,实际中管理起来也不是很方便,还会产生很多重复性的代码。因此,django-rest-framework 引入了视图集(Viewsets),把对同一个资源的不同操作,集中到一个类中。同样的,针对 Web 开发中的常见逻辑,django-rest-framework 也提供了通用视图集,进一步简化开发工作。
Django REST框架构建Web API。Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
Django 作为 Python 社区最受欢迎的 Web 框架之一,凭借其高度抽象的组件和强大方便的脚手架,将快速且流畅的开发体验演绎到了极致。而 Nuxt 作为从 Vue.js 进化而来的前端框架,能够轻松胜任复杂的 SPA(单页应用)开发。两者相遇,能够擦出怎样的火花?这篇教程将用 Django + Nuxt 实现带有完整的增删改查(CRUD)功能的全栈应用。最后郑重警告:不要在深夜阅读此教程!!!
在接下来的两章中,我们将构建一个Todo API后端,然后将其与React前端连接。 我们已经制作了第一个API,并回顾了HTTP和REST的抽象工作原理,但是您仍然可能还没有“完全”了解它们如何结合在一起。 在这两章的最后,您将学到。
Django REST framework 框架是一个用于构建Web API 的强大而又灵活的工具。
在 Django REST Framework 中,我们可以使用路由(Router)来自动生成 API 的 URL 路由。路由可以根据视图集的方法自动创建 URL 路径,从而简化 URL 路由的配置工作。
下面是一个完整的 DRF 视图集示例,包括定义视图集、注册视图集、定制视图集操作等:
先来看看这其中的人情世故:两个视图基本类,五个扩展类,九个视图子类,视图集方法,视图集··
Django REST framework框架是一个用于构建WebAPl的强大而又灵活的工具。通常简称为DRF框架或REST framework。
1.视图中的request对象不再是Django中 HttpRequest类的对象,而是由DRF框架封装成的 Request类的对象。
版权: https://github.com/haiiiiiyun/awesome-django-cn Awesome Django 介绍 Awesome-Django 是由 Roberto Rosario 发起和维护的 Django 资源列表。该列表收集了大量 Django 相关的优秀应用、项目等资源,方便了 Django 用户参考查阅。 Django 优秀资源大全 则是依据 Awesome-Django 翻译而来。也欢迎你帮助推荐和提供建议 Awesome Django 管理界面 分析 资源管理
在这个例子中,我们定义了一个 BookViewSet 视图集,并将 Book 模型的查询集设置为 Book.objects.all(),将 BookSerializer 序列化器设置为默认序列化器。
DRF 框架,全称为 Django Rest Framework,是 Django 内置模块的扩展,用于创建标准化 RESTful API;它利用 ORM 映射数据库,并自定义序列化数据进行返回,多用于前后端分离项目
drf 传入视图的request 不再是Django默认的HttpRequest对象,而是drf 提供的拓展了HttpRequest 类的Request 类的对象。
在 Django REST Framework 中,视图集(Viewset)是一种方便的 API 开发方式,它将视图(View)和序列化器(Serializer)组合起来,提供了一组标准的 API 操作(列表、创建、更新、删除、详情等),可以大大简化 API 的编写和维护工作,提高开发效率和代码可读性。
在完成了登录和注册视图之后,需求中还需要管理员可以管理用户列表,所以就需要完成基础的增删改查操作
APIView:DRF提供的所有视图的基类,继承View并扩展,具备了身份认证、权限检查、流量控制等功能
版权声明:Copyright © https://blog.csdn.net/zzw19951261/article/details/80995504
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
在 Django REST Framework 中,我们可以使用认证(Authentication)和权限(Permission)来控制 API 的访问权限。认证用于验证用户身份,而权限则用于限制用户的操作权限。常用的认证方式包括 Token 认证、Session 认证、Basic 认证等,常用的权限包括 IsAuthenticated、IsAdminUser、AllowAny 等。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
这个月的 Python 专栏将介绍一些 Django 包,它们有益于你的工作,以及你的个人或业余项目。-- Jeff Triplett
用以上的方法写路由,只能是view里面继承了试图集之后才可以使用,并且只是生成默认的增删改查的接口。如果是新增加的其他的动作的方法,是不能自动生成路由的,那么如果处理新增加的动作呢?
领取专属 10元无门槛券
手把手带您无忧上云