DRF上手即用简易教程
DRF框架使用流程
一 API接口
API接口即接口设计规范,主流接口架构:RESTful , RPC
二 RESTful架构的接口响应规范
也是设计的目的即数据结构如下图:
- GET/books 返回资源对象的列表:列表套字典json [{},{},{}]
- GET/books/ID 返回单个资源对象:字典json {}
- POST/books 创建并返回新对象:字典json {}
- PUT/books/ID 更新并返回对象:字典json {}
- DELETE/books/ID 删除并返回空字符串
正常情况下,我们能够在django中用代码自己实现这样的数据结构实现前后台的沟通,但是代码较多,DRF帮助我们简单的实现这个功能,并内部扩展了更多功能.
三 序列化
四 Django RestFramework(DRF)
# 核心思想: 缩减编写api接口代码
# 建立在Django基础之上的Web应用开发框架. 可以快速开发的REST API接口应用.
# 在 REST framework 中, 提供了序列化器Serializer的定义方法,简化序列化的过程
# 还提供丰富的类视图、扩展类、视图集来简化视图的编写工作.
# REST framework 还提供了:认证 , 权限 ,过滤 ,分页 ,接口文档等功能支持.
本文只介绍DRF的最精简的架构使用流程,
仅仅包含DRF的APIView组件 , 序列化组件 , 解析器组件
五 简易流程
### 序列化器
# 如有子应用,可以在子应用中创建seriaizers.py用于保存序列化器
# 创建序列化器类,后面会在视图函数中调用
from rest_framework import serializers
from .models import Student
class StudentModelSerializer(serializers.ModelSerializer):
class Meta:
model = Student
fields = "__all__"
# model 指定序列化器处理的数据字段从模型类Student参考生成
# fields 指明该序列化器包含模型类中的哪些字段 'all' 全字段
# serializers有serializers.ModelSerializer还有serializers.Serializer多种序列化器类
### 视图函数 views.py
from rest_framework.viewsets import ModelViewSet
from .models import Student
from .serializers import StudentModelSerializer
# Create your views here.
class StudentViewSet(ModelViewSet):
# 查询 模型数据
queryset = Student.objects.all()
# 指定 序列化器类
serializer_class = StudentModelSerializer
# queryset 指名该视图集在查询数据时使用的查询集,固定参数名
# serializer_class 指明该视图在进行序列化反序列化使用的序列化器,固定参数名
### 路由定义
from . import views
from rest_framework.routers import DefaultRouter
# 路由列表
urlpatterns = []
router = DefaultRouter() # 可以处理视图的路由器
router.register('students', views.StudentViewSet) # 向路由器中注册视图集
urlpatterns += router.urls # 将路由器中的所以路由信息追到到django的路由列表中