# Django REST Framework
# 1、REST
- 前后端分离
- API(ApplicationProgrammingInterface)应用程序接口
- 为了应对千变万化的前端需求
- REST:Representational State Transfer 表述性状态迁移
- 2000年 Roy Fielding博士论文中提出的一种软件架构风格
- RESTful:遵守REST规范的技术设计的软件可以成为RESTful
- REST规范
- URL代表一个资源,一个资源应该是一个名词
- 动词由HTTP的methode方法提供
- 增删查改对应POST、DELETE、GET、PUT
- URL应该包 含版本信息,版本信息也可以放在HTTP协议中,推荐放在URL中
- 过滤信息,使用URL的参数
- 返回值:每一个返回代码都有具体特定含义
- 返回格式:推荐固定具体格式
- DjangoRestFramework,基于django的一个扩展
- 安装:pip install djangorestframework
- 版本问题:
djangorestframework的version3.7版本是基于django的1.xx版本的
djangorestframework的version3.7之后的版本是基于django的2.xx版本的
django_filter依赖djangorestframework3.7版本
- DRF的主要任务
- 案例T1xyDRF
- 1、django-admin startproject T1xyDRF
- 2、python manage.py startapp case01
- 3、pip install djangorestframework==3.7
- 4、在settings里的INSTALLED_APPS中添加rest_framework和case01
- 5、配置urls
- 先导入from rest_framework import routers
- 创建实例router = routers.SimpleRouter()
- urlpatterns列表中添加url(r'^api/', include(router.urls))
- 创建三个模型:Student, Teacher, ClassRoom
- 在app里创建serializers.py文件,也就是序列化器
- 创建视图集
- 序列化
- 把系统运行中的一些实例等转换成一种可直接表示出来的格式,用来保存、传输等
- 反序列化:序列化的反操作
- 序列化和反序列化对于DRF中
- 实验步骤
- 创建project SerDRF
- 创建app MySer
- settings
- serializers的类型的参数
- rend_only:仅用于序列化输出
- write_only:反序列化输入
- required:反序列化时必须输入,默认True
- allow_null:允许传入None
- validators:使用验证器
- 创建serializeros对象/使用
- 构造方法
Serializer(instance=None, data=empty, **kwarg)
- 反序列化
- 验证
- is_valid():
- 数据是否合法,返回booleam
- 在使用从外部传入的数据之前,必须使用此函数,来确认数据是否经过验证
- 如果验证失败,返回数据错误异常
- validated_data:
- 经过验证后的数据,存入此结构