一、路由器
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
九、操作流程记录
1. git创建本地仓库环境,参考git介绍
2. 进入git仓库文件夹下,创建项目 django-admin startproject appname
3. 本地pycharm开发环境,创建项目,由图中①File-->New Project进入创建界面,修改图中②项目文件名,选择图中③远程链接,点击图中④进行远程环境配置;
选择图中⑥,点击图中⑦选择远程环境配置(若无已有配置,请选择第一项自行配置),图中⑧选择已有配置,点击图中⑨next进入下一项配置项目
点击图中①选择远程文件(即虚拟机中)项目文件所在的虚拟环境下的python解释器,即图中②,最后点击图中③完成配置;
4. 由pytharm中的Tools,即图中①依次选择Deplotment-->Configurtion选择虚拟文件放置路径,进入界面后修改图中②的命名,然后选择图中③指定虚拟环境中项目所在路径,且Mappings中也有两个路径需要"/" ;
5. 点击图中①,进行django sever配置,进入界面后选择图中②,进行重命名以及相关配置设置后,点击图中③进入本地文件夹信息配置;最后点击图中思OK即可。
6. 在pycharm环境中进行项目测试,点击图中①,出现图②信息,即项目创建OK,可进入后续代码编写。
7. 在进入代码编写后,首先需要进行一些环境配置
① apps管理配置,在本地项目文件下创建apps,用于后续创建app后全部移至该文件夹,并settings.py文件中进入如下配置
② 数据库管理配置,用于数据库信息保护,在settings.py文件中进行如下配置,另外需要在项目目录下的__init__.py文件进行mysql信息配置
③ 开发国际地址以及时间配置
④后续还有logs即项目执行记录文件配置,项目访问权限、用户cookie等信息配置,参考后续记录
8. 创建app将其移至apps文件夹,并将虚拟环境中项目中的app删除,保留apps文件下的app
9. 进行models.py模型类定义,然后进行序列化器类定义,皆是定义数据集中包含的项目,姓名,性别,年龄,创建时间,更新时间,逻辑删除等;
10.视图集定义,进行视图集类的功能定义,登录查询删除更新等;
11. url路由配置,主路由,子路由。