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的路由列表中
    
  • 相关阅读:
    leetcode Convert Sorted List to Binary Search Tree
    leetcode Convert Sorted Array to Binary Search Tree
    leetcode Binary Tree Level Order Traversal II
    leetcode Construct Binary Tree from Preorder and Inorder Traversal
    leetcode[105] Construct Binary Tree from Inorder and Postorder Traversal
    证明中序遍历O(n)
    leetcode Maximum Depth of Binary Tree
    限制 button 在 3 秒内不可重复点击
    HTML 和 CSS 画三角形和画多边行基本原理及实践
    在线前端 JS 或 HTML 或 CSS 编写 Demo 处 JSbin 与 jsFiddle 比较
  • 原文地址:https://www.cnblogs.com/dengz/p/11991622.html
Copyright © 2011-2022 走看看