zoukankan      html  css  js  c++  java
  • python全栈开发day98-DRF

    1.CBV源码流程

      

    2.restful协议

            1 所有的数据,不过是通过网络获取的还是操作(增删改查)的数据,都是资源,将一切数据视为资源是REST区别与其他架构风格的最本质属性
    
            2 面向资源架构(ROA:Resource Oriented Architecture)
    
            3  
               不符合规范:
                   127.0.0.1:8000/books
                   127.0.0.1:8000/books/add/
                   127.0.0.1:8000/books/change/1
                   127.0.0.1:8000/books/delete/1
               
               http协议请求方式:GET POST,DELETE,PUT,PATCH,OPTIONS,HEAD,TRACE,CONNECT
                    
                GET:查看数据
                POST:提交数据添加数据库
                     
                            GET              
                    books-------->查看数据--------------------> 返回所有数据列表 :[{},{},{}]
                            POST
                    books-------->添加数据--------------------->返回添加数据 :{}
                            PUT
                    books/1------->更新pk=1的数据--------------->返回更新后的数据: {}
                            Delete
                    books/1-------> 删除pk=1的数据-------------->返回空
                            GET
                    books/1------->查看单条数据   --------------->返回查看的单条数据 {}
                

    3.Django RestFramework(DRF)

       1) APIView

          (1) 源码分析

            -->view(csrf_exempt()) // 调用父类的as_view得来

            -->APIView.dispatch()          

              # 1 重新封装一个新的request对象
              # 2 认证组件,权限组件,频率组件

            --> 分发        

              handler = getattr(self, request.method.lower())
              response = handler(request, *args, **kwargs)
                return response

       2) 序列化组件

       3)视图类(mixin)

       4)认证组件

       5)权限组件

       6) 频率组件

       7)解析器组件

       8) 响应器组件

       10)url控制器

     

    4.补充和扩展

      1) ensure_ascii

        json编码时候,默认将中文用ascii编码,设置ensure_acsii=False,保证中文不被编码。

      2 ) request.body

        请求体的原生数据。

      3) 浏览器怎么发送Json数据,服务器怎么接受json数据

          发:

            

          收(View):

              ret = request.body.decode('utf-8')    

            json.loads(ret)

          python:json.dumps(),json.loads()

          js:JSON.stringify,JSON.parse

          收(APIView):

            request.data/request.POST

      4) django默认解析的数据类型

        django.core.handlers.wsgi.WSGIRequest

        

  • 相关阅读:
    mybatis分页插件pagehelper 5.1.2遇到的问题
    IDEA中SSM框架转变为SOA dubbo框架 zookeeper注册中心
    zookeeper注册中心搭建
    dubbo搭建
    作业三:程序设计大赛项目管理WBS
    无效的绑定声明(未找到)包名.mapper.XXXMapper.方法。IDEA中接口与映射文件未在一起问题
    IDEA中循环依赖解决方法
    Linux环境安装jdk
    在MainActivity的内部静态类PlaceholderFragment 类中的onCreateView中获取fragment_main.xml中控件
    Eclipse: Android Device Chooser
  • 原文地址:https://www.cnblogs.com/wuchenggong/p/9662429.html
Copyright © 2011-2022 走看看