• REST framework框架的基本组件


    登录

    urls.py

        url(r'^login/$', views.LoginView.as_view(),name="login"),

    view.py

    class LoginView(APIView):
        authentication_classes = []
        def post(self,request):
            name=request.data.get("name")
            pwd=request.data.get("pwd")
            user=User.objects.filter(name=name,pwd=pwd).first()
            res = {"state_code": 1000, "msg": None}
            if user:
                random_str=get_random_str(user.name)
                token=Token.objects.update_or_create(user=user,defaults={"token":random_str})
                res["token"]=random_str
            else:
                res["state_code"]=1001 #错误状态码
                res["msg"] = "用户名或者密码错误"
    
            import json
            return Response(json.dumps(res,ensure_ascii=False))

    认证

    局部认证

    全局认证

     权限

     视图

         - 帮助开发者提供了一些类,并在类中提供了多个方法以供我们使用。

    路由 

      - 可以通过as_view传参数,根据请求方式不同执行相应的方法
      - 可以在url中设置一个结尾,类似于: .json

    解析器 

      - 根据ContentType请求头,选择不同解析器对 请求体中的数据进行解析。

      POST /index/ http1.1. host:11.11.11.11 Content-Type:url-formendo.... user=alex&age=123
      POST /index/ http1.1. host:11.11.11.11 Content-Type:application/json {....}

    分页

      根据页码

        http://www.example.com/api/v1/student/?page=1&size=10

      根据索引

        http://www.example.com/api/v1/student/?offset=60&limit=10

      根据加密

        http://www.exmple.com/api/v1/student/?page=erd8

    分页思考:

    页码越大速度越慢,为什么以及如何解决?
    原因:页码越大向后需要扫描的行数越多,因为每次都是从0开始扫描。
    解决:
    - 限制显示的页数
    - 记录当前页数据ID最大值和最小值,再次分页时,根据ID现行筛选,然后再分页。

    速率

    版本

     序列化

    渲染器

  • 相关阅读:
    Oracle 10g AND Oracle 11g手工建库案例--Oracle 11g
    第十七篇:实例分析(1)--初探WDDM驱动学习笔记(八)
    Git权威指南学习笔记(二)Git暂存区
    C++11多线程教学II
    c++ 11 多线程教学(1)
    C++11 多线程 基础
    C++11下的线程池以及灵活的functional + bind + lamda
    intel线程库tbb的使用
    TBB入门
    TTB 基本
  • 原文地址:https://www.cnblogs.com/huay/p/11263414.html
Copyright © 2020-2023  润新知