前情:
《【接口开发实战(一)】基于Django的学院信息管理模块后台开发》
文章目录
在前后端分离的应用模式中,我们通常将后端开发的每一视图都当成一个接口或者API,前端通过访问接口来对数据进行增删改查。
1)Django REST framework
官方网站: “Django REST framework is a powerful and flexible toolkit for building Web APIs.”
- Django REST framework 是一个强大且灵活的工具包,用于构建 Web API。
Django REST framework是基于Django实现的一个RESTful风格API框架,能够帮助我们快速开发RESTful风格的API。
- RestFramework是一个能快速为我们提供API接口,方便我们编程的框架。
- 关于REST以及Restful接口详细介绍可参考《【自动化测试】接口测试之RESTful接口》。
2)Django REST framework安装和配置
1、安装:
pip install djangorestframework
2、配置:
如果想要获取一个图形化的页面,需要将 rest_framework 应用注册到项目的INSTALL_APPS中。
还可以进行全局设置,分页和API使用权限问题,指定管理员使用:
3)基于Django实现RESTful API
3.1 数据序列化
假如我们要传递某个字段给前端,我们可以首先进行序列化,序列化的类要继承serializer 方法。
serializers主要作用:
- 将queryset、model实例等进行序列化,转化成json格式,返回给用户(api接口)。
- 将post与patch/put的上来的数据进行验证。
- 对post与patch/put数据进行处理。
什么是serializers(序列化)?
官网:“Serializers allow complex data such as querysets and model instances to be converted to native Python datatypes that can then be easily rendered into JSON, XML or other content types. Serializers also provide deserialization, allowing parsed data to be converted back into complex types, after first validating the incoming data.”
- 序列化程序允许将查询集和模型实例等复杂数据转换为原生 Python 数据类型,然后可以轻松地将其呈现为 JSON、XML或其他内容类型。
- 序列化程序还提供反序列化,允许在首先验证传入数据后将解析的数据转换回复杂类型。
简单理解:序列化就是数据库把数据发给前端显示,反序列化是从前端获取数据存到数据库。
在app应用文件夹中新建serializers.py,进行数据序列化:
- 因为是基于model字段去开发的,所以建议使用ModelSerializer。
- ModelSerializer在Meta中设置fields字段,系统会自动进行映射,省去每个字段再写一个field。有三种方式。
- 如果想要自定义验证逻辑,可以用到serializers.ValidationError,这里暂不展开,有兴趣的可以参考:https://blog.csdn.net/l_vip/article/details/79156113
3.2 编写Views(视图)
Django用"视图"这个概念封装处理用户请求并返回响应的逻辑。
- 视图是一个可调用对象,它不仅可以是基于函数,也可以是基于类的。
- 相比较于函数,基于类的视图组织与特定HTTP方法相关的代码(GET、POST等) 可以通过单独的方法而不是条件分支来解决。
Django中的View是所有基于类的view的父类,它负责将视图连接到URL、HTTP方法调度(GET、POST等)和其它简单的功能。
3.3 在路由中注册接口
路由简单的来说就是根据用户请求的 URL 链接来判断对应的处理程序,并返回处理结果,也就是 URL 与 Django 的视图建立映射关系。
- Django 路由在 urls.py 配置,urls.py 中的每一条配置对应相应的处理方法。
在url.py中,添加api的路由配置:
3.4 运行调试
浏览器访问:
GET请求:
POST请求:
查看数据库,确实新增了:
【部分内容参考自】
- Django REST Framework框架介绍以及简单使用:https://www.cnblogs.com/huiyichanmian/p/12256203.html
- Django Rest Framework 序列化关系模型:https://segmentfault.com/a/1190000010024982
- django rest framework serializers小结:https://blog.csdn.net/l_vip/article/details/79156113
- Django REST Framework中的视图view、viewset:https://www.pianshen.com/article/4379155016/
- rest_framework框架入门(一):https://blog.csdn.net/dakengbi/article/details/90764412