zoukankan      html  css  js  c++  java
  • resfult规范,drf安装

      一.CBV源码分析

        cbv和fbv

        1.在views中写一个类,继承View,里面写get方法,post方法

        2.在路由中配置:url(r'^test/',views.Test.as_view()),实际上第二个参数位置,放的还是一个函数内存地址

        3.当请求来了,就会执行第二个参数(request,参数),实质上执行view()

        4.view内部调用了dispatch()方法

        5.dispatch分发方法,根据请求方式不同,执行的方法不同

      二.resful规范

        -面向资源架构,面向资源编程

        -10个规范

          -与后台做交互,通常使用https

          -域名:

            -https://api.baidu.com(存在跨域问题)

            -https://www.baidu.com/api/

          -版本

            -https://www.baidu.com/api/v1

            -https://www.baidu.com/api/v2

          -路径,网络上任何东西都是资源,均使用名词表示(可复数)

            -https://api.example.com/v1/books

            不是:https://api.example.com/v1/delete_one_book

          -method来表示增删查改

            -https://api.example.com/v1/books get请求,获取所有书

            -https://api.example.com/v1/books post请求,新增一本书

            -https://api.example.com/v1/book/1 delete请求,删除一本书

            -https://api.example.com/v1/book/1 get请求,获取id为1的这本书

            -https://api.example.com/b1/book/1 put/patch请求,修改id为1的这本书

          -过滤,通过在url上传参的形式传递搜索条件

            -https://api.example.com/v1/books?limit=10: 只拿前10本

            -https://api.example.com/v1/books?price=10: 只拿价格为10的书

          -状态码

            -{status:100,}

          -错误处理,应返回错误信息,error当作key

            {

              status:101,

              errors:'您没有权限操作这个事'  

            }

          -返回结果,针对不同操作,服务器向用户返回的结果应该符合以下规范

            GET/collection: 返回资源对象的列表(数组)

            GET/collection:/resource: 返回单个资源对象

            POST/collection: 返回新生成的资源对象

            PUT/collection/resource: 返回完整的资源对象

            PATCH/collection/resource: 返回完整的资源对象

          -返回结果中提供链接(获取一本书)

            {

              id:1,

              name:lxx,

              price:12

              publish:www.xx.com/api/v1/publish/1

            }

          三.drf写resful的接口

            -先安装

            -pip3 install djangorestframework

            -简单使用

              class DrfTest(APIView):

                def get(self,request,*args,**kwargs):

                  response={'status':100,'errors':None}

                  response['users']=user_list

                  # 用drf的Response,可以通过请求客户端来判断返回数据格式是什么样的

                  return Response(response)

                  # return JsonResponse(response)

          四.drf之序列化

            干什么用的?    把python中的对象,转成json格式字符串

            -1 写一个类继承

              class BookSerializer(serializers.Serializer):

                id = serializers.CharField()

                title = serializers.CharField()

                price = serializers.CharField()

            -2 使用(视图类中)

              book_ser = BookSerializer(queryset对象/单个对象,many=True/False)

              book_ser.data  序列化完成的字典

            -总结: 

              1. 变量名和source指定的值不能一样

              2. source = 'publish.name'还支持继续.

              3. source 还支持方法(没用)

              4. 支持写方法,如下

                方法一定传一个参数,是当前book对象

                publish_dic = serializer.SerializerMethodField()

                  def get_publish_dic(self,obj):

                    return ('id':obj.publish.pk,'name':obj.publish.name)

        -在线格式化json    

          https://www.json.cn/

  • 相关阅读:
    实例属性 类属性 实例域 类域
    研究数据集
    static 静态域 类域 静态方法 工厂方法 he use of the static keyword to create fields and methods that belong to the class, rather than to an instance of the class 非访问修饰符
    accessor mothod mutator mothod 更改器方法 访问器方法 类的方法可以访问类的任何一个对象的私有域!
    上钻 下钻 切片 转轴 降采样
    识别会话
    Performance Tuning Using Linux Process Management Commands
    Secure Hash Algorithm 3
    grouped differently across partitions
    spark 划分stage Wide vs Narrow Dependencies 窄依赖 宽依赖 解析 作业 job stage 阶段 RDD有向无环图拆分 任务 Task 网络传输和计算开销 任务集 taskset
  • 原文地址:https://www.cnblogs.com/xiaocaiyang/p/10403252.html
Copyright © 2011-2022 走看看