zoukankan      html  css  js  c++  java
  • questions information

    1. 面向对象

    类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。

    三大特性:

    封装:

      -- 将内容封装到对象中

      -- 将方法疯长到类中

      实例:自定义分页,restframework的request,

    继承:

      -- 将多个类共有的方法提取到父类中,子类仅需继承父类而不必一一实现每个方法

      涉及 -- 多继承

         -- 经典类 -- 深度优先

         -- 新式类 -- 广度优先

      实例:restframework的apiview继承django的view,django的view继承的基类obj,FORM表单继承forms,forms继承基类obj。

    多态:

      -- 多态指的是一类事物有多种形态

    多态:同一种事物的多种形态,动物分为人类,猪类(在定义角度)
    import abc
    class Animal(metaclass=abc.ABCMeta): #同一类事物:动物
        @abc.abstractmethod
        def talk(self):
            pass
     
    class People(Animal): #动物的形态之一:人
        def talk(self):
            print('say hello')
     
    class Dog(Animal):     #动物的形态之二:狗
        def talk(self):
            print('say wangwang')
     
    class Pig(Animal):      #动物的形态之三:猪
        def talk(self):
            print('say aoao')
    动物多态
    import abc
    class File(metaclass=abc.ABCMeta): #同一类事物:文件
        @abc.abstractmethod
        def click(self):
            pass
     
    class Text(File):        #文件的形态之一:文本文件
        def click(self):
            print('open file')
     
    class ExeFile(File):    #文件的形态之二:可执行文件
        def click(self):
            print('execute file')
    文件多态

    多态性:

      -- 多态性是指具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容的函数。在面向对象方法中一般是这样表述多态性:向不同的对象发送同一条消息,不同的对象在接收时会产生不同的行为(即方法)。也就是说,每个对象可以用自己的方式去响应共同的消息。所谓消息,就是调用函数,不同的行为就是指不同的实现,即执行不同的函数。

    #多态:同一种事物的多种形态,动物分为人类,猪类(在定义角度)
    import abc
    class Animal(metaclass=abc.ABCMeta): #同一类事物:动物
        @abc.abstractmethod
        def talk(self):
            pass
     
    class People(Animal): #动物的形态之一:人
        def talk(self):
            print('say hello')
     
    class Dog(Animal):    #动物的形态之二:狗
        def talk(self):
            print('say wangwang')
     
    class Pig(Animal):     #动物的形态之三:猪
        def talk(self):
            print('say aoao')
    
    peo1=peo()
    pig1=pig()
    
    多态性:一种调用方式,不同的执行效果(多态性)
    多态性依赖于:继承
    多态性:定义统一的接口,
    def func(obj): #obj这个参数没有类型限制,可以传入不同类型的值
        obj.talk() #调用的逻辑都一样,执行的结果却不一样
     
    func(peo1)
    func(pig1)
    多种形态相同方法

      涉及 -- 鸭子模型 

      “当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”

      在鸭子类型中,关注的不是对象的类型本身,而是它是如何使用的。例如,在不使用鸭子类型的语言中,我们可以编写一个函数,它接受一个类型为鸭的对象,并调用它的走和叫方法。在使用鸭子类型的语言中,这样的一个函数可以接受一个任意类型的对象,并调用它的走和叫方法。

    2. django生命周期

    请求--wsgi--中间件--URL路由系统--根据url匹配相应的视图函数--view视图函数--models--数据库

    --将数据库返回给视图--view视图函数--要展示的数据返回给模版--template模版--渲染成html给用户

    3. wsgi协议

    wsgi,是协议 ,不属于django,django利用wsgi写socket,请求来到wsig,协议规范wsig和django的程序规范,约束
    wsgiref,python模块,是实现了wsgi协议的一个模块。模块本质:一个socket服务端(Django)性能低,测试用的
    werkzeug ,是实现了wsgi协议的一个模块。模块本质:一个socket服务端(Flask框架)
    tornado ,是实现了wsgi协议的一个模块。模块本质:自己写的soket,也可以用wsgi的,一个socket服务端(tornado框架)
    uwsgi,是实现了wsgi协议的一个模块。模块本质:一个socket服务端 (Django)线上部署

    4. django rest framework生命周期(cbv)

    请求--wsgi--中间件--路由--as.view内部函数view--dispatch--封装,认证,权限,节流--反射--get,post,delete函数

    5. 中间件,装饰器

    - process_request
    - process_view
    - process_response
    - process_exception
    - process_render_template
    五种方法

      -- 适用于统一所有请求批量做操作

      实例:

        -- 角色的权限控制 rbac

        -- 用户认证

        -- csrf

          -- 访问给你随机字符串,再来的时候给我带过来   放生在 process view 方法

        -- session

          -- 请求进来拿随机字符串,去数据库拿到相关数据  request.session 就是基于这个中间件

        -- 黑名单

        -- 日志记录

    6. rest framework 框架原理

          a.认证流程 

        dispatch--封装request--initial--perform_authticate--request.user--循环authentication对象执行authenticate方法--反射函数

          authenticate方法的三种返回值,报错,元祖(user对象,token对象),None

                headers方法

        b.权限流程

        dispatch--封装request--initial--perform_authticate--循环执行permission的has_permission方法

        has_permission方法的二中返回值,true,false

        has_object_permisson方法

      c.节流  

  • 相关阅读:
    hadoop集群管理之 SecondaryNameNode和NameNode
    无法fsck问题解决
    处世
    [THUSC2016]成绩单
    Python安装官方whl包、tar.gz包、zip包
    poj1159 Palindrome 动态规划
    hoj1249 Optimal Array Multiplication Sequence 矩阵链乘
    hoj分类(转)
    hoj 2012 winter training Graph Day1 106 miles to Chicago图论最短路dijkstra算法
    poj1050 To the Max
  • 原文地址:https://www.cnblogs.com/jokerbj/p/8522227.html
Copyright © 2011-2022 走看看