questions information

1. 面向對象

類(Class): 用來描述具備相同的屬性和方法的對象的集合。它定義了該集合中每一個對象所共有的屬性和方法。對象是類的實例。html

三大特性:python

封裝:數據庫

  -- 將內容封裝到對象中django

  -- 將方法瘋長到類中api

  實例:自定義分頁,restframework的request,session

繼承:框架

  -- 將多個類共有的方法提取到父類中,子類僅需繼承父類而沒必要一一實現每一個方法iview

  涉及 -- 多繼承socket

     -- 經典類 -- 深度優先ide

     -- 新式類 -- 廣度優先

  實例: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.節流  

相關文章
相關標籤/搜索