- 一、RESTful
- 1.请求与响应
- 2.设计规范
- 二、DRF项目初始化
- 1.DRF概述
- 2.日志器
- 三、序列化器
- 1.概念
- 2.创建步骤
- 四、视图集
- 1.概念
- 2.创建视图集
1.HTTP请求
分为:
1)请求行
请求方式:POST、GET、PUT、DELETe
常见的协议版本:HTTP/1.1
2)请求头
Cookie:浏览器缓存
Content type:请求内容类型 等等……
3)请求体:请求的主体数据
2.HTTP响应
1)响应行
保存有HTTP协议版本、状态码
2)响应头
Set-Cookie:服务器向浏览器写入cookie
Content-type:响应类型 等等……
3)响应体
RESTful设计风格是一种接口设计规范,解决不同开发人员按照自己习惯与风格开发出来的接口,有一定的差异性
1.请求方式:分为四种,每一种都对应一个操作
1)GET:(SELECT操作)从服务器获取资源
2)POST:(CREATE操作)给服务器提交资源
3)PUT:(UPDATE操作)请求中的负载创建或者替换目标资源
4)DELETE:(DELETE操作)删除资源
2.请求地址
比如学生管理系统:
请求方法 请求地址 后端操作 响应
GET /students 获取所有学生 数组
POST /students 增加学生 创建的对象
GET /students/1 获取id为1的学生 单个对象
PUT /students/1 修改id为1的学生 修改后的对象
DELETE /students/1 删除id为1的学生 空
3.状态码
1)状态码分类:
分类 分类描述
1** 信息,服务器收到请求,需要请求者继续执行操作
2** 成功,操作被成功接收并处理
3** 重定向,需要进一步的操作以完成请求
4** 客户端错误,请求包含语法错误或无法完成请求,如404,400
5** 服务器错误,服务器在处理请求的过程中发生了错误
2)常见的状态码:
状态码 描述
200 请求成功
302 请求重定向
304 请求资源没有改变,访问本地缓存
404 路径编写错误,或者服务器资源不存在
500 服务器内部错误,服务端代码程序出现错误,抛异常
1.DRF是Django Rest Framework的缩写,是一个内置在Django里面的子应用,可以快速的开发REST API接口应用,就是一个Django插件或者说是拓展
2.开发新项目
1)打开MobaXterm,创建新的虚拟环境。
2)下载django框架:pip install django -i https://pypi.douban.com/simple
3)下载djangorestframework:pip install djangorestframework -i https://pypi.douban.com/simple
4)下载pymysql,后续会用到:pip install pymysql -i https://pypi.douban.com/simple
5)cd drf6进入到上次创建的线上仓库。
6)在仓库中创建django项目,后续可以进行版本的控制。
7)打开pycharm新建项目。
8)配置解释器
9)输入密码,点击next
10)选择解释器,点击finish,最后点击create创建
11)配置同步目录,点击Tools——>deployment——>configurations
重新命名为drf6,选择同步路径
后两个改为根目录,点击ok
12)将项目下载到pycharm中
13)点击settings
找到django
配置项目根目录等基本信息
14)配置启动服务
填写基本信息
15)启动项目,浏览器访问127.0.0.1:8000,出现下图小火箭表示项目创建成功。
16)配置作者信息 。说明该文件是由该作者编写的,每次新建python文件时就会自动配置作者信息。
17)创建项目数据库。进入数据库:mysql -uroot -p,输入密码:Root123
创建一个名为drf6的数据库,编码格式为utf8
18)创建项目用户。每一个项目都应该有独立的数据库,每一个库都应该有独立的用户。该用户只能操作该项目的库,用于权限的管理。
命令: CRANT ALL PRIVILENGES ON drf6 .* TO drf6_user@‘%’ IDENTIFIED BY ‘qwe123’; 授予drf6这个数据库的所有权限给drf6_user用户,并且允许他远程登录,并设置用户密码qwe123。
注意:库名、表名、字段名都是反引号。
然后刷新权限
19)退出后重新登录进入创建的数据库。这时候就只有drf6这个数据库的操作权限了。
20)回到PyCharm打开init.py文件,设置连接器为mysql连接器。
21)打开settings.py文件,编写DATABASES字段信息。
注意:直接在setting.py文件中配置mysql连接信息,暴露mysql服务器地址、用户名、密码会带来的问题:
1.如果开源,上传到线上仓库gitee,别人就会盗取
2.不方便修改和管理,在实际开发中,生产是一个数据库,开发是一个数据库
因此,在项目下新建一个名为config的文件夹,在该文件夹下进行分类,创建一个dbs的文件夹,在该文件夹下创建一个mysql_dev.cnf的文件
22)在MobaXterm配置线上仓库过滤,不将config里面的信息上传到线上仓库中
首先进入.gitignore文件夹
添加不上传的文件路径
将rest_framework注册进去
23)添加日志器,看第2点
24)进行迁移和映射,快捷键:ctrl+Alt+R,输入makemigrations和migrate
25)重新调整文件目录架构,新建一个名为apps的文件夹,右键,将该文件设置为资源文件目录,之后新创建app后就可以直接挪到apps文件夹中。
26)此时新创建的app在settings.py中注册的时候需要注意,我们的模块是放在apps文件夹下的,因此,我们需要将apps的目录添加到系统路径中去。
用于记录系统运行过程中的各种日志信息,在项目根目录中创建一个logs文件夹,用于存放日志文件
1.进入django官方文档中找到日志记录:https://docs.djangoproject.com/en/4.0/
2.找到examples示例,看具体做法,在settings.py中导入os模块,然后添加LOGGING字段信息。
序列化器本质就是一个类,和模型类差不多的类,用于JSON与模型对象互转以及校验数据
1.序列化:将模型转换为json数据
1)实例化序列化器
2)将模型对象或查询集传入instance参数,如果是多条数据需要传入many=True
2.反序列化:将json或表单数据转为模型对象
1)实例化序列化器
2)将要反序列化的数据传入data参数,调用save方法进行创建,如果还传入了instance参数,则调用sava方法进行修改
1.在drfstudy文件夹下创建一个名为serializers的py文件
2.根据创建的模型字段编写序列化器的字段内容
DRF允许你将一组相关视图的逻辑组合在单个类中。ViewSet只是一种基于类的视图,它不提供任何方法处理程序,如get()或post(),而是提供诸如list()和create()子类的操作,ViewSet的方法处理程序仅使用as_view方法绑定到完成视图的响应操作。
2.创建视图集1.在views.py文件中添加如下代码:
from django.shortcuts import render
from rest_framework import viewsets
from rest_framework .response import Response
from .models import *
from .serializers import *
# Create your views here.
# 视图集:封装事物所有操作的类
# 定义类继承ViewSet类
# 定义对应的操作方法:create:创建单条,list:查询所有,retrieve:查询单条,update:修改,delete:删除
class StudentViewSet(viewsets.ViewSet):
def list(self,request):
"""
编写了查询所有学生的接口,根据restful设计风格定义路由:请求方式、请求地址
"""
students = Student.objects.all() #返回的是查询集
#实例化序列化器,对查询集进行格式转换,将查询集类型转为json格式类型,many=True返回的数据是多条的
#转为的json格式是列表格式
serializer = StudentSerializer(students,many=True)
#序列化器对象.data是得到转换后的json格式数据
return Response(serializer.data)
2.最后启动项目访问,得到如下页面
整体流程:编写models.py文件——>编写serializer.py文件——>编写views.py视图集——>编写路由
3.添加数据的效果,如下图所示
4.推送到线上仓库,进行数据持久化。每天编写结束后将项目推送到线上仓库进行备份
1)查看状态
2)提交,经过过滤后此时是没有提交config文件的
3)推送到线上仓库。此时就能在gitee上查看到自己上传的项目,如果之后电脑换了,只需要将线上仓库代码克隆下来就好



