Django REST Framework 教程开篇
欢迎来到 HelloDjango 全栈系列教程第二步——Django REST Framework 教程!
首先恭喜你完成了 HelloDjango 全栈系列教程的第一步——Django 博客教程(第二版),在这个教程中,我们学习了基于传统模板引擎的开发方式,前端展示的 HTML 页面由后端负责渲染,后端程序员包揽了前后端开发的全部工作。
但是随着前端技术的演进,前后端分离的开发方式变得越来越流行。稍有规模的公司大都采用前后端分离的开发方式,在这种开发方式下,后端程序员只需关注业务逻辑,通过接口返回业务数据,无需懂得 HTML、CSS、JavaScript 这些前端语言(当然作为优秀的程序员,虽然不用再写,但这些都还是要懂的);前端程序员,则可以使用借助 Vue、React 等优秀的 js 框架以及 Webpack 等打包工具,专注于页面开发。而将他们联系起来的桥梁就是前后端之间数据交互的接口规范。
现在最流行的数据交互接口规范当然要属 REST 规范。REST 全称 Representational State Transfer,意为"表现层状态转化"。简单来说,在符合 REST 原则的 RESTful 架构中,一个 URL 代表某个网络资源,网络资源可以指一篇博客文章、一张图片、一首歌曲或者一种服务等。资源通常由某种标准化的格式进行描述,描述资源的格式有很多种,例如 HTML 文档就是一种描述形式。在此之前,XML 是最为常用的格式,但现在,也有越来越多的系统采用 JSON 这种更加轻量的描述形式。在客户端和服务器交互时,资源便以某种描述的格式进行传递。客户端则使用 HTTP 协议,充分借助 HTTP 协议的动词(例如 GET、POST)来表达对服务端资源进行某种操作的意图,例如 GET 用来获取资源,POST 用来新建资源(也可以用于更新资源),PUT 用来更新资源,DELETE 用来删除资源。
因此,假设我们的系统采用 RESTful 架构,对于前端工程师来说,他的工作就是根据渲染的页面,向后端发起符合 RESTful 风格的 HTTP 请求,获取接口返回的数据,渲染前端页面。而对于后端程序员来说,就是要编写接口,解读前端发来的请求,对资源进行相应操作并返回前端需要的数据。
如何解读前端的请求、如何使用指定的格式描述并传递资源等都是一系列标准化且重复的工作,所以可以由一套统一的框架来实现。django 本身没有提供这样的处理框架,但 django 的第三方拓展——django-rest-framework 就是一套专门用来开发符合 REST 规范的 RESTful 接口的框架。可以说在现在这个前后端分离的大环境下,django 开发基本离不开 django-rest-framework。因此接下来的教程里,我们将全面学习 django-rest-framework 的使用。
我们的示例项目将延续 Django 博客教程(第二版) 中开发的博客,如果你是跟着教程到这里的话,那你可以很顺畅地继续走下去。如果你没有看上一部教程也没有关系,在 django-rest-framework 教程正式开始之前会指导大家如何一步步将博客运行起来。django-rest-framework 教程虽然延续 Django 博客教程(第二版) 中的项目,但在内容上并无太大关联,如果你已经有了 django 基础(了解 ORM 以及类视图就行),就可以直接开始本教程。当然如果是纯 django 新手,对 django 中的基础概念还比较陌生的话,推荐先学习 Django 博客教程(第二版),打好基础,再来学习本教程会事半功倍。
关注公众号加入交流群
Django REST Framework 教程开篇的更多相关文章
- Django Rest Framework 教程及API向导
Django Rest Framework 教程及API向导. 一.请求(Request)REST_FRAMEWORK 中的 Request 扩展了标准的HttpRequest,为 REST_FRAM ...
- django restful framework教程大全
一. 什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移” REST从资源的角 ...
- Django REST FrameWork中文教程2:请求和响应
从这一点开始,我们将真正开始覆盖REST框架的核心.我们来介绍几个基本的构建块. 请求对象REST框架引入了Request扩展常规的对象HttpRequest,并提供更灵活的请求解析.Request对 ...
- Django REST framework 中文教程1:序列化
建立环境 在我们做任何事情之前,我们将使用virtualenv创建一个新的虚拟环境.这将确保我们的包配置与我们正在开展的任何其他项目保持良好的隔离. virtualenv envsource env/ ...
- Python3+PyCharm+Django+Django REST framework开发教程
一.说明 自己一是想跟上潮流二是习惯于直接干三是没有人可以请教,由于这三点经常搞得要死要活.之前只简单看过没写过Diango,没看过Django REST framework,今天一步到位直接上又撞上 ...
- django rest framework
Django-Rest-Framework 教程: 4. 验证和权限 作者: Desmond Chen, 发布日期: 2014-06-01, 修改日期: 2014-06-02 到目前为止, 我们的AP ...
- 用Django Rest Framework和AngularJS开始你的项目
Reference: http://blog.csdn.net/seele52/article/details/14105445 译序:虽然本文号称是"hello world式的教程&quo ...
- Django REST framework+Vue 打造生鲜超市(一)
一.项目介绍 1.1.掌握的技术 Vue + Django Rest Framework 前后端分离技术 彻底玩转restful api 开发流程 Django Rest Framework 的功能实 ...
- Django REST framework+Vue 打造生鲜超市(三)
四.xadmin后台管理 4.1.xadmin添加富文本插件 (1)xadmin/plugins文件夹下新建文件ueditor.py 代码如下: # xadmin/plugins/ueditor.py ...
随机推荐
- HTML5 基础知识(1)——基本标签
## HTML**概念**:是最基础的网页开发语言(Hyper Text Markup Langage 超文本标记语言) > 1.超文本:超文本是用超链接的方式i,将各种不同空间的文字组织在一起 ...
- Asp.Net Core 中IdentityServer4 授权中心之自定义授权模式
一.前言 上一篇我分享了一篇关于 Asp.Net Core 中IdentityServer4 授权中心之应用实战 的文章,其中有不少博友给我提了问题,其中有一个博友问我的一个场景,我给他解答的还不够完 ...
- OpenWrt tcpdump 抓包
路由器用的是 网件的 4300 刷的是石像鬼双固件 1, 安装支持库opkg updateopkg install libpcapopkg install tcpdump 2, 设置条件开始捕获tcp ...
- Java 基础(四):数组
数组,一种应用非常广泛的数据结构,简单地来说就是一组类型相同且无序的元素的存储在固定长度且有序的内存空间. 创建一个数组 在Java中,我们可以通过[]去声明一个指定类型的数组 int[] a; // ...
- LeetCode43,一题让你学会高精度算法
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode系列第22篇文章,今天讲的内容是高精度算法. 今天和大家讨论的算法是高精度,对应的LeetCode是第43题.题面其实 ...
- iOS开发技术 - 二维码扫描、生成
QRecLevel:QR_ECLEVEL_H // 二维码容错率,最高为30%(即QR_ECLEVEL_H),即LOGO有大 ...
- 金融和IT的区别
在进入金融圈之前, 我写了十五年的代码, 在San Francisco Bay Area(也就是中国人所说的硅谷)工作过两三年. 去年因为Fintech和香港.NET俱乐部的缘故, 我接触了私人银行和 ...
- 从源码和doc揭秘——Java中的Char究竟几个字节,Java与Unicode的关系
#编码与字符编码 (懂编码的建议直接跳过) 在计算机世界中,任何事物都是用二进制图片数字表示的,图片可以编码为JPG,PNG格式的字节流,音频,视频有MP3,MP4格式的字节流.这些JPG,MP3等都 ...
- 原 c++中map与unordered_map的区别
c++中map与unordered_map的区别 头文件 map: #include < map > unordered_map: #include < unordered_map ...
- 从使用到原理,探究Java线程池
什么是线程池 当我们需要处理某个任务的时候,可以新创建一个线程,让线程去执行任务.线程池的字面意思就是存放线程的池子,当我们需要处理某个任务的时候,可以从线程池里取出一条线程去执行. 为什么需要线程池 ...