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.节流  

最新文章

  1. 利用SQLServer数据库发送邮件
  2. Accessibility应用之focus篇
  3. Hello World(本博客启程篇)
  4. 解决android引用library project错误
  5. [CareerCup] 4.4 Create List at Each Depth of Binary Tree 二叉树的各层创建链表
  6. Oracle Flashback Technologies - 闪回数据库
  7. 105. Construct Binary Tree from Preorder and Inorder Traversal
  8. 【BZOJ】【4004】【JLOI2015】装备购买
  9. 自定义 Layer 属性的动画
  10. pthread 简要使用指南
  11. JS实现数组每次只显示5条数据
  12. 博弈论中的Nim博弈
  13. ubuntu16.04安装tensorflow1.3
  14. OpenCV入门之获取验证码的单个字符(二)
  15. 下单快发货慢:一个 JOIN SQL 引起 SqlClient 读取数据慢的奇特问题
  16. c# UTF-16转UTF-8 互转
  17. Spring事务超时、回滚的相关说明
  18. 解析Linux中的VFS文件系统机制
  19. Django入门指南-第7章:模板引擎设置(完结)
  20. excl筛选求和

热门文章

  1. SSH服务:packet_write_wait: Connection to 67.218.143.160 port 22: Broken pipe错误处理
  2. APUE学习笔记——6.10 时间与时间例程 time_t
  3. L154
  4. selected多次点击不生效
  5. 随想录(kgdb的基本原理)
  6. Android内存优化(四)解析Memory Monitor、Allocation Tracker和Heap Dump
  7. webpy/flask/bottle性能测试
  8. python 生成器推导式与列表推导式的区别
  9. 正确设置Firefox下载文件文件名的方法
  10. js helper(hsv/hsb转rgb颜色,uuid,金额小写转大写)