4. 序列化
api接口开发,最核心最常见的一个代码编写过程就是序列化,所谓序列化就是把**数据转换格式**。常见的序列化方式: json,pickle,base64,struct,….
序列化可以分两个阶段:
**序列化**: 把我们识别的数据转换成指定的格式提供给别人。 例如:我们在django中获取到的数据默认是模型对象,但是模型对象数据无法直接提供给前端或别的平台使用,所以我们需要把数据进行序列化,变成字符串或者json数据,提供给别人。 **反序列化**:把别人提供的数据转换/还原成我们需要的格式。 例如:前端js提供过来的json数据,对于python而言json就是字符串,我们需要进行反序列化换成字典,然后接着字典再进行转换成模型对象,这样我们才能把数据保存到数据库中。
5. Django Rest_Framework
核心思想: 大量缩减编写api接口的代码 Django REST framework是一个建立在Django基础之上的Web 应用开发框架,可以快速的开发REST API接口应用。在REST framework中,提供了序列化器Serialzier的定义,可以帮助我们简化序列化与反序列化的过程,
不仅如此,还提供丰富的类视图、扩展类、视图集来简化视图的编写工作。REST framework还提供了认证、权限、限流、过滤、分页、接口文档等功能支持。REST framework还提供了一个调试API接口 的Web可视化界面来方便查看测试接口。 ![drf_logo](assets/drf_logo.png) 中文文档:https://q1mi.github.io/Django-REST-framework-documentation/#django-rest-framework github: https://github.com/encode/django-rest-framework/tree/master
### 特点
- 提供了定义序列化器Serializer的方法,可以快速根据 Django ORM 或者其它库自动序列化/反序列化; - 提供了丰富的类视图、Mixin扩展类,简化视图的编写; - 丰富的定制层级:函数视图、类视图、视图集合到自动生成 API,满足各种需要; - 多种身份认证和权限认证方式的支持;[jwt] - 内置了限流系统; - 直观的 API web 界面;【方便我们调试开发api接口】 - 可扩展性,插件丰富
6. 环境安装与配置
DRF需要以下依赖: - Python (3.5 以上) - Django (2.2 以上) **DRF是以Django子应用的方式提供的,所以我们可以直接利用已有的Django环境而无需从新创建。(若没有Django环境,需要先创建环境安装Django)**
## 6.1 安装DRF
anaconda (内置180多个python模块,)/ miniconda(内置仅仅是30多个常用模块) 前提是已经安装了django,建议安装在虚拟环境 ```python # conda create -n drfdemo python=3.8 # pip install django==3.2.4 -i https://pypi.douban.com/simple pip install djangorestframework -i https://pypi.douban.com/simple # 因为我们需要接下来,需要开发api接口肯定要操作数据,所以安装pymysql pip install pymysql -i https://pypi.douban.com/simple ```
### 6.1.1 创建django项目
cd ~/Desktop django-admin startproject drfdemo
使用pycharm打开项目,设置虚拟环境的解析器,并修改manage.py中的后缀参数。
## 6.2 添加rest_framework应用
在**settings.py**的**INSTALLED_APPS**中添加'rest_framework'。
```python INSTALLED_APPS = [ ... 'rest_framework', ] ```
接下来就可以使用DRF提供的功能进行api接口开发了。在项目中如果使用rest_framework框架实现API接口,主要有以下三个步骤:
- 将请求的数据(如JSON格式)转换为模型类对象
- 操作数据库
- 将模型类对象转换为响应的数据(如JSON格式)
## 6.3 体验drf完全简写代码的过程
5个接口: 添加1条数据 获取所有数据 获取1条数据 更新1条数据 删除1条数据
# 终端下执行:
django-admin startapp stuapi # 提供原生的django代码实现的API接口
django-admin startapp students # 提供drf代码实现的API接口
## 6.3.1. 创建模型操作类
标签:序列化,接口,django,framework,视图,Django,drf From: https://www.cnblogs.com/TodayWind/p/17069625.html