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

questions information的更多相关文章

  1. Using Information Fragments to Answer the Questions Developers Ask

    content : 1.采访了11个开发者,获得78个常问的问题:2.对78个问题进行分类,分为8类:These questions span eight domains of information ...

  2. Financial Information Exchange (FIX) Protocol Interview Questions Answers[z]

    What do you mean by Warrant?Warrant is a financial product which gives right to holder to Buy or Sel ...

  3. WCF学习系列二---【WCF Interview Questions – Part 2 翻译系列】

    http://www.topwcftutorials.net/2012/09/wcf-faqs-part2.html WCF Interview Questions – Part 2 This WCF ...

  4. WCF学习系列三--【WCF Interview Questions – Part 3 翻译系列】

    http://www.topwcftutorials.net/2012/10/wcf-faqs-part3.html WCF Interview Questions – Part 3 This WCF ...

  5. Websites for more Android development information

    There is a vibrant, helpful Android developer community on the Web. Here are a numberof useful websi ...

  6. How To Ask Questions The Smart Way

    How To Ask Questions The Smart Way Eric Steven Raymond Thyrsus Enterprises <esr@thyrsus.com> R ...

  7. Questions that are independent of programming language. These questions are typically more abstract than other categories.

    Questions that are independent of programming language.  These questions are typically more abstract ...

  8. Fisher information matrix笔记

    在看FK论文时,fisher information matrix是必须理解的. 从维基百科查阅到,Fisher information matrix是用利用最大似然函数估计来计算方差矩阵. 来源于: ...

  9. UNIX command Questions Answers asked in Interview

    UNIX or Linux operating system has become default Server operating system and for whichever programm ...

随机推荐

  1. 程序包需要 NuGet 客户端版本“2.12”或更高版本,但当前的 NuGet 版本为“2.8.50313.46”

    由于安装install-package newtonsoft.json 会出现需要 NuGet 客户端版本“2.12”或更高版本来安装,于是换成旧版的newtonsoft.json   PM> ...

  2. (转载)Android学习笔记⑨——android.content.ActivityNotFoundException异常处理

    异常1:Java.lang.ClassNotFoundException 08-13 18:29:22.924: E/AndroidRuntime(1875):Caused by: Java.lang ...

  3. react 问题

    安装依赖报错问题                                           可能需要按顺序安装,  不能cnpm npm 混合安装, 参考react项目入门 react an ...

  4. Tornado 概述

    Tornado 概述 1 基本概念 像其他web框架一样, tornado也包括了以下内容: 基本构成: a 路由系统 b 视图 获取请求数据 返回数据 c 模板语言 模板基本使用 自定义函数 利用组 ...

  5. Android 代码实现viewPager+fragment 模仿今日头条的顶部导航

    模仿今日头条的顶部导航:    下载地址: http://download.csdn.net/detail/u014608640/9917700 效果图:

  6. 网页基础学习--网络结构和HTML(未完待续)

    一.网络常见基本结构: 1.B/S网络结构: Browser/Server:浏览器/服务器,这是现在最流行的网络模式.平常的上网:比如新浪网.凤凰网等.我的电脑(客户端)               ...

  7. 深入理解Eureka之源码解析

    转载请标明出处: http://blog.csdn.net/forezp/article/details/73017664 本文出自方志朋的博客 Eureka的一些概念 Register:服务注册 当 ...

  8. Linux基本概念及操作

    基本概念及操作 一.实验介绍 1.1 实验内容: 实验楼环境介绍 常用 Shell 命令及快捷键 Linux 使用小技巧 1.2 实验知识点 Linux 基本命令 通配符的使用 基本软件安装 查看帮助 ...

  9. 理解Scala中的Extractor

    引言 最近抱着<Programming in Scala>(英文第二版)在死啃Scala.在阅读第26章Extractor时,偶然在Stack Overflow上搜到一个帖子<Sca ...

  10. gulp使用 实现文件修改实时刷新

    gulp例子:https://github.com/Aquarius1993/gulpDemo 淘宝镜像:$ npm install -g cnpm --registry=https://regist ...