DRF---django-rest-framework: 1.通过一个案例简单回顾一下django, 一.前后端分离,不分离 不分离:前端页面的显示,都是由后端返回的,就是说后端处理了参数,数据库,之后返回给了前端一个渲染之后的html页面,这种应用模式比较适合纯网页应用。一般使用render进行一个数据返回,把数据塞到模版里。 分离:前端通过ajax或者anxios请求数据,拿到数据,自己来展示;后端只提供你要的数据格式(json,xml等)就可以了 1.为什么要进行前后端分离(优点): (1)pc,app(andrio,ios),pad多客户端适应,不能每个客户端都写一个接口吧 (2)前后端开发职责不清(要将前端的页面,改成模版页面,所以后端的哥们必须要懂一些前端的知识,而前端的哥们要展示数据他就必须要会写我们python的模版语法) (3)开发效率低,互相等待 (4)一旦后端要改了语言,那么前端的html里面的模版语言也都要重写!这就是我们所说的高耦合 2.前后端分离缺点: 1.成本增加,前端要学习ajax网络请求等,后端要配合前端,给他想要的数据格式 2.前端工作量提升了 3.数据交互,必须要有文档来支撑 二.restful api:是什么 1.轻量级,一般通过http或者https协议,不需要额外的协议!常用的方法post,get,put,delete,(patch,options不常用) 2.面向资源,一目了然,具有意义(增删改查,都是动词,但是URI里要求是名词) GET /zoos:列出所有动物园 POST /zoos:新建一个动物园 GET /zoos/ID:获取某个指定动物园的信息 PUT /zoos/ID:更新某个指定动物园的信息(提供该动物园的全部信息) 3.一般通过json或者xml 4.版本(Versioning)应该将API的版本号放入URL。 http://www.example.com/app/1.0/foo http://www.example.com/app/1.1/foo 5.状态码(Status Codes) 200,404,500 三.序列化与反序列化的概念 序列化(encoding):把python对象编码转换成Json字符串。 反序列化(decoding):把json格式字符串解码为python对象。 四.什么是DRF 1.DRF是一个在django基础之上进行二次开发的一个前后端分离的web框架,他是严格遵守restful api规范的!,这也就是说为什么之前我们介绍了那么多 2.回顾一下django是怎么样创建项目的 django 数据库的常见的5种操作 增删改查(单一,查多条的) 五.为什么要用DRF? 说白了,DRF做了很多重复性的工作,而且也帮助我们做了很多数据的优化与调整 六.Django REST framework 简介 1.在序列化与反序列化时,虽然操作的数据不尽相同,但是执行的过程却是相似的,也就是说这部分代码是可以复用简化编写的。 2.在开发REST API的视图中,虽然每个视图具体操作的数据不同,但增、删、改、查的实现流程基本套路化,所以这部分代码也是可以复用简化编写的: 增:校验请求数据 -> 执行反序列化过程 -> 保存数据库 -> 将保存的对象序列化并返回 删:判断要删除的数据是否存在 -> 执行数据库删除 改:判断要修改的数据是否存在 -> 校验请求的数据 -> 执行反序列化过程 -> 保存数据库 -> 将保存的对象序列化并返回 查:查询数据库 -> 将数据序列化并返回 Django REST framework可以帮助我们简化上述的代码编写,大大提高REST API的开发速度。 7.认识Django REST framework Django REST framework 框架是一个用于构建Web API 的强大而又灵活的工具。 通常简称为DRF框架 或 REST framework。 DRF框架是建立在Django框架基础之上,由Tom Christie大牛二次开发的开源项目。 特点 •提供了定义序列化器Serializer的方法,可以快速根据 Django ORM 或者其它库自动序列化/反序列化; •提供了丰富的类视图、Mixin扩展类,简化视图的编写; •丰富的定制层级:函数视图、类视图、视图集合到自动生成 API,满足各种需要; •多种身份认证和权限认证方式的支持; •内置了限流系统; •直观的 API web 界面; •可扩展性,插件丰富 资料: •官方文档 •Github源码 测测试数据 insert into users (id,nick_name,gender,image,add_time,mobile) values (1,"张三",0, "images/1.jpg","2010-11-12",""),(2,"李四",0, "images/2.jpg","2011-11-12",""),(3,"王五",0, "images/3.jpg","2012-11-12",""); 创建项目: 安装包: Pip install djangorestframework 配置 Install apps ’rest_framework’