相关文章推荐
直爽的番茄  ·  北京七大火车站乘车攻略(怎么坐地铁)- 北京本地宝·  7 月前    · 
严肃的煎饼  ·  Farmers Cooperative ...·  8 月前    · 
呐喊的木耳  ·  国家民委副主任就兴边富民行动"十一五"规划答问·  1 年前    · 
失眠的番茄  ·  资本家才是好人,无极领域文集,大智近妖文集_ ...·  1 年前    · 
讲道义的松鼠  ·  如何在WPF中创建可折叠面板-腾讯云开发者社 ...·  2 年前    · 
小百科  ›  Django-rest-framework 是个什么鬼?开发者社区
数据库视图 rest django
坏坏的蚂蚁
2 年前
作者头像
HelloGitHub
0 篇文章

Django-rest-framework 是个什么鬼?

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > HelloGitHub > Django-rest-framework 是个什么鬼?

Django-rest-framework 是个什么鬼?

作者头像
HelloGitHub
发布 于 2021-05-14 16:15:18
486 0
发布 于 2021-05-14 16:15:18
举报

作者: HelloGitHub-追梦人物[1]

文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库[2]

我们首先来回顾一下传统的基于模板引擎的 django 开发工作流:

  1. 绑定 URL 和视图函数。当用户访问某个 URL 时,调用绑定的视图函数进行处理。
  2. 编写视图函数的逻辑。视图中通常涉及数据库的操作。
  3. 在视图中渲染 HTML 模板,返回 HTTP 响应。

其实,基于 django-rest-framework 的 RESTful API 的开发,过程是完全类似的:

  1. 绑定 URL 和视图函数。当用户访问某个 URL 时,调用绑定的视图函数进行处理。
  2. 编写视图函数的逻辑,根据 HTTP 请求类型,对请求的资源进行相应操作,这个过程通常涉及数据库的操作。
  3. 使用约定的资源描述格式(例如 XML 或者 JSON)序列化资源并将数据返回给客户端(通过 HTTP 响应)。

对比发现,前两步几乎是完全相同的。不同点在于,在传统的基于模板引擎的开发方式中,资源使用 HTML 文档进行描述并返回给客户端,而在 RESTful API 的开发方式中,资源通常被描述为 JSON 或者 XML 的格式返回给客户端。

有的同学就要问了,虽然 django 的视图函数通常情况下返回 HTML 文档的响应,但是 django 也支持返回 XML 格式或者 JSON 格式的响应,那么为什么还要使用 django-rest-framework 呢?

事实上,的确能够在 django 中返回 JSON 或者 XML 格式的数据,但是 django 框架本身只提供了十分基础的功能。django-rest-framework 是基于 django 的拓展,专为 RESTful API 的开发而设计,提供了十分丰富的辅助类和函数,帮助我们方便地开发 API。下面就来简单介绍 django-rest-framework 为我们提供了哪些功能特性,这些功能和特性我们在接下来的实战中会进一步学习其用法,这里可以先从宏观层面,做一个简单的了解。

  • 内容协商(Content Negotiation)。之前说过,在 RESFful 架构的系统中,资源以某种描述形式在客户端和服务器之间传递,django-rest-framework 根据客户端能够接受的资源格式,自动使用合适的资源描述工具,返回客户端可接受的资源。
  • 认证与鉴权(Authentication and Permission)。客户端对资源的操作通常是受限的,有些资源只能由经过身份认证或具有相应权限的用户才能操作,django-rest-framework 提供了丰富的认证类和鉴权类,帮助我们对用户的身份和权限进行校验。
  • 序列化(Serialization)。django 基于 Python 语言开发,因此资源通常由 Python 对象描述,那么在传递给客户端时,就要进行转换,例如将 Python 对象转换为 JSON 字符串,这个过程就叫做序列化。django 内置的序列化器功能有限,django-rest-framework 提供了功能更加丰富和强大的序列化器,让资源的序列化工作变得异常简单。
  • 各种通用视图(Generic Views)。django 针对 Web 开发中常见的处理逻辑,提供了各种通用视图函数,以提高代码的复用性,减少开发者的工作量。django-rest-framework 同样针对 RESTful API 开发中常见的处理逻辑,提供了各种通用视图函数。
  • 路由自动生成器(Router)。django-rest-framework 根据编写的视图函数,自动生成符合 RESTful 设计的 URL 路由。
  • 文档(Documentation)。django-rest-framework 基于 OpenAPI 模式自动生成 API 文档,无需我们手动编写和维护。

除此以外,django-rest-framework 还提供了分页(Pagination)、API 版本控制(Versioning)、缓存(Caching)、限流(Throtting)等各种功能类。

在接下来的实战教程中,我们会逐一的学习并使用它们。

让我们正式开启 django-rest-framework 的学习之旅吧!

参考资料

[1] HelloGitHub-追梦人物: https://www.zmrenwu.com

[2] HelloGitHub-Team 仓库:https://github.com/HelloGitHub-Team/HelloDjango-REST-framework-tutorial

本文参与 腾讯云自媒体分享计划 ,分享自微信公众号。
原始发表:2020-04-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除
django
文件存储
api
json
github

本文分享自 HelloGitHub 微信公众号, 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

django
文件存储
api
json
github
评论
登录 后参与评论
0 条评论
热度
最新
登录 后参与评论
关于作者
HelloGitHub
0
文章
0
累计阅读量
0
获赞
前往专栏
目录
  • 参考资料
领券
  • 社区

    • 专栏文章
    • 阅读清单
    • 互动问答
    • 技术沙龙
    • 技术视频
    • 团队主页
    • 腾讯云TI平台
  • 活动

    • 自媒体分享计划
    • 邀请作者入驻
    • 自荐上首页
    • 技术竞赛
  • 资源

    • 技术周刊
    • 社区标签
    • 开发者手册
    • 开发者实验室
  • 关于

    • 社区规范
    • 免责声明
    • 联系我们
    • 友情链接

腾讯云开发者

扫码关注腾讯云开发者

扫码关注腾讯云开发者

领取腾讯云代金券

热门产品

  • 域名注册
  • 云服务器
  • 区块链服务
  • 消息队列
  • 网络加速
  • 云数据库
  • 域名解析
  • 云存储
  • 视频直播

热门推荐

  • 人脸识别
  • 腾讯会议
  • 企业云
  • CDN加速
  • 视频通话
  • 图像分析
  • MySQL 数据库
  • SSL 证书
  • 语音识别

更多推荐

  • 数据安全
  • 负载均衡
  • 短信
  • 文字识别
  • 云点播
  • 商标注册
  • 小程序开发
  • 网站监控
  • 数据迁移

Copyright © 2013 - 2023 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有

深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569

腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287

问题归档 专栏文章 快讯文章归档 关键词归档 开发者手册归档 开发者手册 Section 归档

Copyright © 2013 - 2023 Tencent Cloud.

All Rights Reserved. 腾讯云 版权所有

登录 后参与评论
 
推荐文章
直爽的番茄  ·  北京七大火车站乘车攻略(怎么坐地铁)- 北京本地宝
7 月前
严肃的煎饼  ·  Farmers Cooperative Elevator Co. MN - Stock Quotes
8 月前
呐喊的木耳  ·  国家民委副主任就兴边富民行动"十一五"规划答问
1 年前
失眠的番茄  ·  资本家才是好人,无极领域文集,大智近妖文集_哔哩哔哩_bilibili
1 年前
讲道义的松鼠  ·  如何在WPF中创建可折叠面板-腾讯云开发者社区-腾讯云
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
小百科 - 百科知识指南
© 2024 ~ 沪ICP备11025650号