lxinghua

博客园 首页 新随笔 联系 订阅 管理

一、路由器

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路由配置,主路由,子路由。

posted on 2023-06-08 12:55  興華  阅读(4)  评论(0编辑  收藏  举报