zoukankan      html  css  js  c++  java
  • DRF简易了解

    Drf框架

    一丶API接口

    # 为了在团队内部形成共识、防止个人习惯差异引起的混乱,我们需要找到一种大家都觉得很好的接口实现规范,而且这种规范能够让后端写的接口,用途一目了然,减少双方之间的合作成本。
    
    # 目前市面上大部分公司开发人员使用的接口服务架构主要有:restful、rpc。
    
    # restful:翻译成中文,即 资源状态转换
    	# 1.把后端所有的数据/文件都看成资源
    POST http://www.lufei.com/api/students/   添加学生数据
    
    GET    http://www.lufei.com/api/students/   获取所有学生
    
    DELETE http://www.lufei.com/api/students/<pk>   删除1个学生 
    
    GET  http://www.lufei.com/api/students/<pk>  获取一个学生
    
    

    二丶序列化

    # api接口开发,最核心最常见的一个过程就是序列化,所谓序列化就是把**数据转换格式**,序列化可以分两个阶段:
    
    ### 序列化 :  把我们识别的数据转换成指定的格式提供给别人。
    	例如:我们在django中获取到的数据默认是模型对象,但是模型对象数据无法直接提供给前端或别的平台使用,所以我们需要把数据进行序列化,变成字符串或者json数据,提供给别人。
    	
    ### 反序列化 : 把别人提供的数据转换/还原成我们需要的格式。
    	例如:前端js提供过来的json数据,对于python而言就是字符串,我们需要进行反序列化换成模型类对象,这样我们才能把数据保存到数据库中。
    
    
    # 总结: 
    接收数据[反序列化]
    
    操作数据
    
    响应数据[序列化]
    
    

    三丶Django Rest Framework

    # 核心思想: 缩减编写api接口代码
    # 建立在Django基础之上的Web应用开发框架. 可以快速开发的REST API接口应用.
    # 在 REST framework 中, 提供了序列化器Serializer的定,帮助我们简化序列化的过程
    # 还提供丰富的类视图、扩展类、视图集来简化视图的编写工作.
    # REST framework 还提供了:认证 , 权限 ,过滤 ,分页 ,接口文档等功能支持.
    
    # 特点:
    	提供了定义序列化器Serializer的方法,可以快速根据Django ORM或者其他自动序列化/反序列化
    	提供丰富的视图类,Mixin扩展类,简化视图的编写
    	丰富的定制层级:函数视图,类视图,视图集合到自动生成API
    	多种身份认证和权限认证方式支持: jwt
    	内置了限流系统
    	直观的API web界面
    	插件,
    

    四丶流程

    ### 序列化器
    # 在子应用中穿件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' 全字段
    
    
    ### 视图函数
        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的路由列表中
    
  • 相关阅读:
    七, 表查询 一
    六, 表管理 二
    五,表管理 一
    四, 用户管理 二
    三, 用户管理 一
    二, 连接Oracle 二
    一,连接Oracle 一
    Oracle 11g 精简客户端
    解决Oracle在命令行下无法使用del等键问题
    NGINX反向代理,后端服务器获取真实IP
  • 原文地址:https://www.cnblogs.com/dengz/p/11991622.html
Copyright © 2011-2022 走看看