一、路由器
1. SimpleRouter
该路由器包括标准集合:list,create,retrieve,update,partial_update和destroy动作的路由。视图集中还可以使用@detail_route或@list_route装饰器标记要被路由的其他方法。
2. DefaultRouter
这个路由器类似于上面的SimpleRouter,但是还包括一个默认返回所有列表的超链接的API根视图。它还生成可选的.json样式格式后缀的路由。
二、逻辑删除
1. 逻辑删除概述
逻辑删除:删除并不是真正的做删除,而是进行逻辑删除,逻辑删除的数据也应该无法查询、获取,所以需要对代码进行修改。
2. 实现
三、关联序列化
1. StringRelatedField
将关联模型的__str__方法返回值序列化出来。
2. source
序列化器增加一个字段引入另外一个模型的字段数据。
3. 序列化器嵌套(反序列化)
序列化器增加一个字段引入另外一个模型的字段数据,显示关联序列化器的所有字段数据嵌入。
四、拓展
1. 视图集新增额外功能
默认只为标准的增删改查行为生成了路由信息,如果想昂自定义的行为也生成路由需要再定义行为上使用action装饰器。
2. 限流
可以对接口访问频次进行限制,以减轻服务器压力。可以使用second、minute、hour、day来指明周期。
五、RESTful
1. 请求与响应
2. 概述
3. 设计规范
RESTful设计风格:一种接口设计规范,解决不同开发人员按照自己习惯与风格开发出来的接口差异性。
请求方式:
GET:SELECT从服务器获取资源;
POST:CREATE POST:给服务器提交资源;
PUT:UPDATE 请求中的负载创建或者替换目标资源;
DELETE:DELETE删除资源。
请求地址:
例如学生管理系统:我们需要对学生进行增删改查,每个操作都需要提供对应的api接口。
请求方法 |
请求地址 |
后端操作 |
响应 |
GET |
/students |
获取所有学生 |
数组 |
POST |
/students |
增加学生 |
创建的对象 |
GET |
/students/1 |
获取id为1的学生 |
单个对象 |
PUT |
/students/1 |
修改id为1的学生 |
修改后的对象 |
DELETE |
/students/1 |
删除id为1的学生 |
空 |
状态码:
六、DRF项目初始
1. DRF概述
DRF(Django Rest Framework)一个内置在jdango里面的子应用,可以快速开发REST API接口应用,就是一个Django插件或者说是拓展。
直接在虚拟环境中执行以下命令:
pip install djangorestframework
配置作者信息:File-->Editor-->file and Code Templates-->Python Script.
mysql安装以及信息配置,此处采用远程文件配置,而非srttings.py中直接配置,有效的保护个人信息。
Mysql数据库:虚拟环境采用超级账户进入mysql后,创建一个新账号,用于专门管理该项目下数据库数据。
2. 日志器
用于记录系统运行过程中的各种日志信息,在项目根目录中创建一个logs文件夹,用于存放日志文件。
3. APP项目结构
APP统一管理文件夹配置。
七、序列化器
1. Serializer
序列化器:本质就是一个类,和模型类差不多的类,用于JSON与模型对象爱你互转以及效验数据。
from rest_framework import serializers
class MySerializer(serializers.Serializer):
pass
序列化器字段名和模型字段名必须一致;
序列化器字段可以和模型字段个数不一致;
如果少于模型字段,则没有的字段不会进行显示;
其中就是定义:需要传入哪些字段数据,需要返回哪些字段数据。
2. ModeSerializer
Drf给我们提供了Serializer的子类ModeSerializer,Serializer能做的事情ModeSerializer都能做,并在基础上进行了拓展。
from rest_framework import serializers
class MySerializer(serializers.ModelSerializer):
class Meta:
model = student
fields = ‘__all__’
ModeSerializer可以根据模型自动生成序列化器中的字段并帮我们实现create和update方法。
修改映射字段:extra_kwargs
在class Meta中使用extra_kwargs属性来修改映射字段的属性:
extra_kwargs = {
'字段': { '属性': 值}
}
3. 额外效验逻辑
① 属性级别的效验:在序列化器中定义方法,方法名为validate_属性名(self,value)会自动将该属性的值传入value参数;
② 对象级别的验证:需要访问多个字段的验证时需要使用对象级别的验证,定义validate(self, data)方法,会自动将传入进来的所有数据传入data参数,data是一个字典。
4. 使用
实例化序列化器:使用序列化器就是实例化这个序列化器类,创建序列化器对象,初始化函数里面有两个参数,Instance:传入模型、查询集、字典;Data:传入要反序列化的数据。
八、视图集
1. 视图集
Django REST framework允许将一组相关视图的逻辑组合在单个类称为(ViewSet)中。ViesSet只是一种基于类的视图,它不提供任何方法处理程序,如get()或post(),而是提供诸如list()和create()子类的操作,ViewSet的方法处理程序仅适用as_view方法绑定到完成视图的响应操作。
list() 提供一组数据
retrieve() 提供单个数据
create() 创建数据
update() 保存数据
destory() 删除数据
2. ModeViewSet
实现了刚刚的所有方法。只需要定义数据集和序列化器就好了。
class MyViewSet(ModelViewSet):
queryset = model.objects.all()
serializer_class = ModelSerializer
标签:删除,模型,视图,1113,序列化,数据,class,DRF From: https://www.cnblogs.com/lxinghua/p/17466124.html