WSGI协议其实是定义了一种server与application解耦的规范,即可以有多个实现WSGI server的服务器,也可以有多个实现WSGI application的框架,那么就可以选择任意的server和application组合实现自己的web应用。例如uWSGI和Gunicorn都是实现了WSGI server协议的服务器,Django,Flask是实现了WSGI application协议的web框架,可以根据项目实际情况搭配使用。
Django REST framework 通常简称为DRF框架,是建立在Django框架基础之上,由Tom Christie大牛二次开发的开源项目。
REST特点:url简洁,将参数通过url传到服务器
如果一个架构符合REST原则,就称它为RESTful架构:
- 每一个URL代表一种资源,资源作为网址,只能有名词,不能有动词,而且所用的名词往往与数据库的表名对应.
- 客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。
REST接口开发的核心任务
- 将请求的数据(如JSON格式)转换为模型类对象
- 操作数据库
- 将模型类对象转换为响应的数据(如JSON格式)
1、安装DRF
pip install djangorestframework
2、添加rest_framework应用
INSTALLED_APPS = [
...
'rest_framework',
]
3、创建序列化器
class BookInfoSerializer(serializers.ModelSerializer):
"""图书数据序列化器"""
class Meta:
model = BookInfo
fields = '__all__'
4、编写视图
from rest_framework.viewsets import ModelViewSet
from .serializers import BookInfoSerializer
from .models import BookInfo
class BookInfoViewSet(ModelViewSet):
queryset = BookInfo.objects.all()
serializer_class = BookInfoSerializer
- queryset 指明该视图集在查询数据时使用的查询集
- serializer_class 指明该视图在进行序列化或反序列化时使用的序列化器
5、定义路由
urlpatterns = [
...
]
Serializer的构造方法为:
Serializer(instance=None, data=empty, **kwarg)
说明:用于序列化时,将模型类对象传入instance参数,用于反序列化时,将要被反序列化的数据传入data参数。除了instance和data参数外,在构造Serializer对象时,还可通过context参数额外添加数据。
通过context参数附加的数据,可以通过Serializer对象的context属性获取。
视图
两个基类:APIView,GenericAPIView
五个扩展类:ListModelMixin列表视图扩展类,CreateModelMixin创建视图扩展类,RetrieveModelMixin详情视图扩展类,UpdateModelMixin更新视图扩展类,DestroyModelMixin删除视图扩展类;
几个可用子类视图:CreateAPIView,ListAPIView,RetireveAPIView,DestoryAPIView,UpdateAPIView,RetrieveUpdateAPIView,RetrieveUpdateDestoryAPIView;