Django的DRF框架

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;

你可能感兴趣的:(学习)