系列文章目录
目录
前言
上一章讲过使用Restful风格开发一套接口,但是这个接口只能使用postman调试工具进行测试,并且在实现模型类转换为json数据格式的时候比较复杂,Django REST framework(DRF)框架来帮你解决
一、DRF介绍
1.是什么
- 一个依赖于django的工具包,可以更方便的帮助我们构建Restful接口
2.能做什么
- 提供了可视化的API调试界面,开发者可以在线测试接口
- 提供了各种开箱即用的API认证授权工具,如OAuth2
- 提供了orm数据序列化和非orm数据的序列化支持
- 支持函数视图
- 大量的文档和社区支持
3.工作流程
相比正常django,drf主要多了一个序列化与反序列化步骤,该步骤可以帮我们把模型类查询集更方便的转换为json数据(序列化),或者把json数据转换为模型类对象(反序列化)
二、使用步骤
1.安装
pip install djangorestframework
2.配置djangorestframework
- 在set中的INSTALLED_APPS应用中添加'rest_framework',进行子应用注册
- 在你自己的应用下创建serializers.py文件
3.关联模型类
在serializers.py文件中编辑
from rest_framework import serializers
from .models import BookInfo
class BookInfoSerializer(serializers.ModelSerializer):
"""
图书数据序列化器
"""
class Meta:
model = BookInfo # 指定改序列化器处理的数据字段从模型类BookInfo 生成
fields = '__all__' # 指明改序列化器中包含模型类中哪些字段 all 指明包含所有的字段
- 定义关联模型类BookInfo的序列化器BookInfoSerializer,序列化器需要继承serializers.ModelSerializer
- 在序列化器中定义一个Meta内部类,类变量model表示关联的模型类,fields指明序列化该模型类中的那些字段,使用__all__表示全部
4.定义视图
在views文件中添加视图方法
from rest_framework.viewsets import ModelViewSet
class BookInfoView(ModelViewSet):
"""
定义类视图
"""
queryset = BookInfo.objects.all() # 指定给视图集在查询数据的 时候使用的查询集
serializer_class = BookInfoSerializer
5.配置路由
在urls文件中添加
router = DefaultRouter() # 使用处理视图的路由器
router.register('book',views.BookInfoView) # 像这个路由器里面注册视图集
# 把这个book路由添加到
urlpatterns += router.urls # 将路由器中的路由信息追加到Django的路由列表中
三.使用DRFweb页面进行测试
运行django,访问根路由,会进入到Api Root页面,此时你如果定义的有别的路由为跟路由会被覆盖
进入book路由返回定义的bookinfo模型类的所有结果
最下面点击post可以对书籍进行添加
进入/book/2/路由 获取id为2的书籍的信息,点击右上角的delete可以对该对象进行删除,点击最下面的put可以对模型类进行修改
总结
DRF使用起来挺简单的,序列化与反序列化屏蔽了对模型类的操作,并且提供了一个接口测试的web界面,本章讲的还只是DRF的一部分,想要深入了解可可以去drf官方网站第十二章:Restful风格介绍