Rest Api接口开发核心任务
- 将请求的数据(如json格式)转换为模型类对象-反序列化
- 操作数据库
- 将模型类对象转换为响应的数据(如json格式)-序列化
Django Rest framework
DRF框架是建立在Django基础上,用于构建Rest web Api的强大而灵活的工具,通常在序列化和反序列化时,虽然操作的数据不相同,但是执行的过程是相似的,也就是部分代码是可以复用简化编写,并且增删改查的实现基本的套路是一样的,这部分代码也可以复用简化。
增:校验请求数据->执行反序列化过程->保存数据库->将保存的对象序列化后返回
删:判断要删除的数据是否存在->执行数据库删除
改:判断要修改的数据是否存在->校验请求数据->执行反序列化过程->保存数据->将保存的对象序列化后返回
查:查询数据库->将数据序列化后返回
DRF帮助我们简化了上述的操作,是开发效率大大提高.
DRF特点
- 提供了定义序列化器Serializer的方法,可以快速根据Django ORM后者其他库自动序列化或反序列化
- 提供了丰富的类视图、MIxin扩展类,简化视图的编写
- 丰富的层级定制:函数视图、类视图、视图集合到自动生成API,满足各种需要
- 多种身份认证和权限认证方式的支持
- 内置了限流系统
- 只管的API Web界面
- 可扩展性,插件丰富
实践
- 创建序列化器
model指明该序列化器处理的数据字段是从模型类Article生成的
fields指明该序列化器包含模型类中的哪些字段,__all__包含所有字段
- 编写视图
queryset指明视图集在查询数据时使用的查询集
serializer_class指明该视图在进行序列化和反序列化时使用的序列化器
- 定义路由
通过DefaultRouter路由器来注册视图集的路由,然后再项目的路由中注册app的路由
- 运行测试
运行django项目,在浏览器打开http://127.0.0.1:8000/api/articles/
这是DRF框架的接口管理页面,可以方便我们对接口进行调试,新增一个文章
http://127.0.0.1:8000/api/articles/2/可以通过这样的路由访问文章详情,在详情页面,可以对文章进行各种操作。可以看到DRF的强大,短短几行代码,就可以很好的实现增删改查操作。文章中涉及到的图片上传请查看下列文章
Django使用自定义文件服务器
Django集成CKeditor并上传图片到自定义文件服务器
django-restframework框架两个视图基类讲解