drf介绍 Django REST framework (简称:DRF)是一个强大而灵活的 Web API 工具。 遵循RESTFullAPI风格,功能完善,可快速开发API平台。.../1/ #对于指定数据进行更新,删除,查看操作 DRF序列化器 序列化与反序列化介绍 在日常开发中,会从别的API获取数据或者自己写API提供数据,数据格式一般都是采用JSON格式。...这期间就会涉及两个专业术语: **序列化:**将python对象转json,后端响应 **反序列化:**将json转为python对象, 后端处理数据需要转换成python对象 之前常用三种序列化方式...之前常用三种序列化方式: Django内置Serializers模块 Serializers是Django内置的一个序列化器,可直接将Python对象转为JSON格式,但不支持反序列化 from django.core...内置JsonResponse模块 JsonResponse模块自动将Python对象转为JSON对象并响应。
一、为什么使用 Django REST Framework?快速构建 API:通过 DRF 的封装类(如 APIView、ModelSerializer)减少重复代码。...二、适用场景前后端分离项目(如为 Vue/React 提供数据接口)。移动应用(iOS/Android)后端 API。快速开发企业级数据管理后台。...三、实现一个简单接口第 1 步:安装配置 DRF安装 DRF:pip install djangorestframework创建book应用python manage.py startapp book配置...'rest_framework', # 添加 DRF 'your_app', # 你的应用(需提前创建)book]REST_FRAMEWORK =...runserver访问 API 端点:浏览器或工具访问:http://localhost:8000/api/books/预期 JSON 响应:[ { "title": "Python
创建子应用: python manage.py startapp 子应用名称 c. 使用shell: python manage.py shell d....5.2Restful API接口设计风格 关键点: a.url地址尽量使用名词,不要使用动词; b.请求url地址采用不同的请求方式执行不同的操作;(POST新增/GET获取/PUT修改/DELETE删除...Response类的对象:传入原始的响应数据,会自动根据客户的请求头中 Accept将响应数据转换为对应的格式进行返回,默认是json,仅支持json和html 3.异常处理:如果视图中抛出了未处理异常...操作序列化器: 属性: serializer_class(指定视图所使用的序列化器类) 方法: get_serializer_class返回视图所使用的序列化器类 get_serializer创建视图所使用的序列化器类对象...数据库查询 属性: queryset(指定视图所使用的查询集) 方法: get_queryset返回视图所使用的查询集 get_object从视图所使用的查询集中查询指定的对象,默认根据pk进行查询。
安装Django REST Framework(以下简称DRF)非常简单。您只需按照以下步骤操作:创建一个新的Django项目或使用现有的Django项目。在命令行中使用pip命令安装DRF。...'rest_framework',]这将允许您使用DRF的所有功能。现在您已经安装了DRF,接下来我们将介绍一些基本的用法和示例。创建序列化器序列化器是DRF中的一个核心概念。...我们指定了User模型作为序列化器的元数据,并指定了我们想要在JSON中包含的字段。创建视图视图是DRF中的另一个核心概念。它们定义了API的行为,即如何响应请求、如何验证输入等。...我们指定了我们想要返回的所有用户的查询集,并指定了用于序列化数据的序列化器。创建路由路由是将URL映射到视图的一种机制。在DRF中,我们可以使用Django的URLConf和DRF的路由器来定义路由。...测试API现在我们已经定义了序列化器、视图和路由,我们可以使用Django内置的开发服务器测试我们的API。运行以下命令:python manage.py runserver这将启动开发服务器。
在Python面试中,对DRF的理解与实际应用能力是衡量候选人Web服务开发能力的重要指标。本篇博客将深入浅出地探讨DRF面试中常见的问题、易错点以及应对策略,并结合实例代码进行讲解。...路由与URL配置路由器(Router):说明路由器如何根据ViewSet自动创建API路由,以及如何自定义路由命名和视图动作。...异常处理:介绍如何使用DRF的异常体系(如PermissionDenied、NotAuthenticated、ValidationError等)处理错误情况,并自定义异常响应。...:在项目中统一响应格式,包括状态码、数据结构、错误消息等,遵循RESTful原则,提升API的易用性和一致性。...、规避常见错误,并通过实战项目积累经验,将有助于你在Python面试中展现优秀的API开发技能,从容应对DRF相关的问题挑战。
APIView类 APIView:DRF提供的所有视图的基类,继承View并扩展,具备了身份认证、权限检查、流量控制等功能 创建项目 创建app并加入settings.py E:\workspace\...django-project\day2\django_drf>python manage.py startapp myapp 项目主路由配置: django_drf/urls.py 创建项目视图:...提供了一个响应类Reponse,响应的数据会自动转换符合前端的JSON数据格式。...,传递python对象 status:状态码,默认200 template_name:模板名称 headers:用于响应头信息的字典 content_type:响应数据的类型 使用方法: return...常用功能 主流认证方式 Session认证 HTTP是一个无状态的协议,每次访问都是新的,早期主要用于浏览网页,随着时代发展,像在线购物网站的兴起,就面临着记录哪些人登录系统,哪些人购物车里放了商品。
-开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。...search=西&ordering=-price&limit=3 响应数据: 1) http请求的响应会有响应状态码,接口用来返回操作的资源数据,可以拥有 操作数据结果的 状态码 status...子资源、图片、视频等资源),返回该资源的url链接 API与用户的通信协议,总是使用HTTPs协议 域名: https://api.example.com 尽量将API部署在专用域名...manage.py makemigrations MacBook-pro:rest_ful driverzeng$ python3 manage.py migrate ## 创建超级用户 MacBook-pro...-i https://mirrors.aliyun.com/pypi/simple/ ---- 图形化安装  drf使用 ---- 注册drf settings.py INSTALLED_APPS
Django REST framework(简称DRF)是个Python技术栈的后端框架,用来构建RESTful API。...Code就知道结果如何 良好的RESTful API设计的基本原则是: 返回JSON 严禁乱用状态码 处理好分页 返回具体的实体数据而不是返回通用的JSON数据 请求对象有默认值 创建项目 接下来我们使用...DRF创建一个简单的API,允许管理员查看和编辑用户和组。...先创建名为tutorial的project和名为quickstart的app: # 创建项目目录 mkdir tutorial cd tutorial # 创建Python虚拟环境 python -m...学了Django再看DRF,思路清晰多了,虽然我代码能力不强,但总是在追求规范和标准,难道是因为做测试的职业病么?
DRF介绍 DRF是Django Rest Framework单词的简写,是在Django框架中实现Restful API的一个插件,使用他可以非常方便的实现接口数据的返回。...Django中也可以使用JsonResponse直接返回json格式的数据,但是DRF相比直接使用Django返回json数据有以下几个好处: 可以自动生成API文档,在前后端分离开发的时候进行沟通比较有用...支持ORM模型和非ORM数据的序列化。 高度封装了视图,使得返回json数据更加的高效。...安装DRF 安装drf之前,需要以下依赖 Python (3.5, 3.6, 3.7) Django (1.11, 2.0, 2.1, 2.2, 3.0) 准备好以上依赖后,可以通过以下命令安装 pip3...'rest_framework', ] drf知识体系 接口:什么是接口、restful接口规范 CBV生命周期源码 – 基于restful规范下的CBV接口 请求组件、解析组件、响应组件 序列化组件(
,版本信息也可以放在HTTP协议中 过滤信息,使用URL的参数代表过滤 返回值: 每一个返回代码都有具体特定含义 返回格式:推荐固定具体格式 DjangoRestFramework(DRF) https...创建三个模型:Student,Teacher, ClassRoom 创建序列化器 创建视图聚合 序列化 序列化: 把系统运行中的一些实例等转换成一种可直接表示出来的格式,用来保存,传输等 反序列化: 序列化的反操作序列化.../反序列化-DRF 实验步骤 创建project DRF2 创建app MySer settingsserializer的类型的参数 read_only: 仅用于序列化输出 write_only: 反序列化输入...required:反序列化时必须输入,默认是True allow_null: 允许传入None validators: 使用验证器创建serializer对象/使用 构造方法 Serializer...的request.POST, request.FILES 在DRF中主要指的是Json query_params 所有传入的关键字 api.tulingxueyuan.com
Swagger 是一套用于描述、生成、消费和可视化 RESTful API 的规范和工具集,目前已演进为 OpenAPI 规范:Swagger 2.0:支持 WebSockets、OAuth2、文件上传等功能...API 描述格式(JSON/YAML)便于前后端协作和 API 版本管理两种方案对比特性 drf-yasg drf-spectacular 规范支持 Swagger...drf-yasg(支持 Swagger 2.0)工具介绍drf-yasg 是基于 Django REST Framework (DRF) 的 API 文档生成工具,专注于 Swagger 2.0 规范...格式文档:http://localhost:8000/swagger.json下载 YAML 格式文档:http://localhost:8000/swagger.yaml三、方案二:使用 drf-spectacular...@extend_schema 装饰器自定义接口描述:from drf_spectacular.utils import extend_schema@extend_schema(summary="创建岗位
Django视图是用来处理请求和响应的,Django默认是按Form和Template来设计的,如果要处理以JSON格式为主的RESTful API,那么就需要对Django请求和响应的处理代码进行优化改造...@api_view和APIView DRF对API视图做了2个封装: @api_view用于函数视图。 APIView用于类视图。...,如: @api_view(['GET', 'POST']) 使用了状态码标识符,如: status.HTTP_404_NOT_FOUND 使用request.data替代了 data = JSONParser...添加后缀格式(可选) 既然DRF能自动处理content type,那么也可以给URL指定具体的后缀格式,比如http://example.com/api/items/4.json。...", "style": "friendly" } API文档 DRF提供了可视化的API HTML文档,把API URL在浏览器中打开即可看到: ?
简单来说:通过DRF创建API后,就可以通过HTTP请求来获取、创建、更新或删除数据(CRUD)。 那么为什么要构建API呢?...关于如何设计出符合REST风格的API,可以参考阮一峰的《RESTful API 设计指南》 那么用DRF实现的就是RESTful API吗?其实DRF没有强制实现。...'rest_framework', ] 同步数据库 python manage.py migrate 创建超级用户admin,密码设置为password123: python manage.py createsuperuser...--email admin@example.com --username admin 创建API 接下来就是重点,我们要创建一个序列化程序将model转换成json格式。...django drf (图片来自:一图看懂Django和DRF(https://zhuanlan.zhihu.com/p/53957464)) 测试API: 使用浏览器访问网址: http://127.0.0.1
"pure_pagination", # 分页 "haystack", # 搜索 "drf_yasg", # 文档 ] 接着使用 drf_yasg 提供的函数来创建一个 django...随着为其添加更多信息,告诉 drf-yasg 这是一个返回资源列表的接口,问题也就顺便解决了。...responses 参数的值是一个字典,字典的键是 HTTP 响应码,值可以是一个序列化器,这样 drf-yasg 会拿这个序列化器去解析接口响应的参数;也可以是一个字符串,drf-yasg 会把字符串直接当做接口响应结果写入文档中...看看修改后的效果: 至此,我们就有了一套比较完善的博客接口文档了,而且大部分内容均由 drf-yasg 为我们自动生成,省去了不少手写文档的麻烦。...如果你在使用过程中遇到了问题,首先尝试分析问题的原因,然后顺藤摸瓜去找到相关的源码,看看库的内部是如何处理你所遇到的问题的,这样就可以针对性地给出解决方案了,这篇教程中列出的很多问题以及最后给出的解决方案
(DRF) API 架构迁移。...计划: 迁移到 JWT (JSON Web Tokens) 认证。...创建数据库 (例如 studyroom_db)。 导入项目提供的 studyroom.sql 文件到创建的数据库中。...第六章 项目总结 6.1 开发感悟 架构演进的挑战: 从传统的 Django 单体应用向前后端分离架构迁移是一个复杂的过程,需要处理好新旧代码的兼容、接口设计、数据同步等问题。...6.2 克服的困难 兼容旧密码: 设计并实现了对旧有明文密码用户的兼容登录及自动哈希升级机制。 前后端联调: 配置 CORS,解决跨域问题;调试 API 接口的请求与响应格式。
上面列出的工具或多或少都需要花费一定时间去手动维护,在drf后端项目中可以利用其自带的Core API、第三方库Swagger以及更好的drf-yasg自动生成接口文档 2、Core API生成接口文档...path('docs/', include_docs_urls(title='API document')), ] 2.3 文档描述说明的定义位置 单一方法的视图,可直接使用类视图的文档字符串 class...当接口有变动时,对应的接口文档也会自动更新 Swagger优势 Swagger可生成一个具有互动性的API控制台,可快速学习和尝试API Swagger可生成客户端SDK代码,用于不同平台上Java、Python...会暴露4种默认路径endpoint, 分别为: /swagger.json, JSON 格式的 API 定义 /swagger.yaml, YAML 格式的 API 定义 /swagger/, 基于原生...://blog.shabbywu.cn/posts/2020/04/15/python-auto-doc-for-drf.html
传统的接口文档通常都是使用Word或者一些接口文档管理平台进行编写,但此类接口文档维护更新比较麻烦,每次接口有变更,需要手动修改接口文档。...Swagger优势: 1)Swagger可生成一个具有互动性的API控制台,开发者可快速学习和尝试API 2)Swagger支持不同客户端SDK代码,用于不同平台上(Java、Python、...)的实现...djangorestframework 3、创建django项目和app # 创建django项目和app django-admin startproject drf_swagger cd drf_swagger...django-admin startapp api 需要注意的是,本篇文章示例,是基于Python3及Django当前最新库来进行的。...# 生成迁文件、执行同步 python manage.py makemigrations python manage.py migrate 2、创建后台管理员用户 python manage.py createsuperuser
DRF的Request对象和Response对象 一旦使用了DRF的视图,那么传入视图的Request对象不在是Django的Request对象,而是DRF封装过后的Request对象。...同样,DRF建议使用封装过的Response来返回HTTP响应,使用该类构造响应对象时,响应的具体数据内容会被转换(render渲染)成符合前端需求的类型。...例如,如果您json使用带有.ajax() 方法的jQuery发送编码数据,则应确保包含该contentType: 'application/json'设置。...使用Response类只是为返回内容协商的 Web API 响应提供了一个更好的接口,可以呈现为多种格式。...不过DRF官方还是建议我们对继承自APIView类或使用@api_view进行装饰的函数,都返回Response对象。 使用了Response对象返回,默认会带有一定的样式。
领英平台所采用的是微服务架构,而多年以来,JSON 一直都是领英在微服务暴露的五万余 API 节点中所使用的序列化格式。...为帮助团队在服务间构建一致性交互,领英创建并开源了一款名为 Rest.li 的 Java 框架。...该框架可用于创建使用 REST 通信风格的服务器和客户端,并抽象网络、序列化、服务发现等数据交换的诸多方面。...领英工程师 Karthik Ramgopal 和 Aman Gupta 分享了在使用 JSON 进行服务间通信所要面临的挑战: 第一个挑战在于,JSON 作为一款文本格式往往过于冗长,从而导致网络带宽的使用和延迟增加...(……)我们所面临的第二个挑战则在于,JSON 的文本性质会导致序列化和反序列化的延迟和吞吐量均不甚理想。
2.RESTFUl API设计 2.1 使用协议 API与用户的通信协议,总是使用HTTPs协议。...GET /orders/2 HTTP/1.1 Accept: application/json 2.8.2 发生错误时的响应 发生错误时不要响应200状态码,有一种不恰当的做法是...2.10 其他 (1)API的身份认证应该使用OAuth 2.0框架。 (2)服务器返回的数据格式,应该尽量使用JSON,避免使用XML。...DRF官网地址,但是大家记住一句话,即便是没有这drf,我们照样能做前后端分离的项目,自己做规范的数据接口,返回json数据,都是没问题的昂,那为什么还用drf啊,这个更nb。...来写个接口,看看效果 好,接下来我们创建一个django项目,models中创建一个表,添加一些数据,然后写一个数据接口来获取一下这些数据,返回json数据类型,按照我们CBV的模式来写,但是下面还没有用到我们的