先講個有趣的小問題,我也是道聽途說,但是確實很有意義。
我們做的專案都有上線的時候,也有在原專案中新增功能模組的時候,那麼奇葩的人會在原檔案中不斷新增功能模組,終於有一天,檔案達到了好幾兆,最後執行編輯器的時候,編輯器都崩了,這就是記憶體超標,這種文題其實可以很好避免。下邊會提到藍圖(blueprint)。
也就是說,隨著業務**的增加,將所有**都放在單個程式檔案中,是非常不合適的。這不僅會讓**閱讀變得困難,而且會給後期維護帶來麻煩。
什麼是藍圖
藍圖:用於實現單個應用的檢視、模板、靜態檔案的集合。
藍圖就是模組化處理的類。
簡單來說,藍圖就是乙個儲存操作路由對映方法的容器,主要用來實現客戶端請求和url相互關聯的功能。 在flask中,使用藍圖可以幫助我們實現模組化應用的功能。
藍圖的執行機制
藍圖是儲存了一組將來可以在應用物件上執行的操作。註冊路由就是一種操作,當在程式例項上呼叫route裝飾器註冊路由時,這個操作將修改物件的url_map路由對映列表。當我們在藍圖物件上呼叫route裝飾器註冊路由時,它只是在內部的乙個延遲操作記錄列表defered_functions中新增了乙個項。當執行應用物件的 register_blueprint() 方法時,應用物件從藍圖物件的 defered_functions 列表中取出每一項,即呼叫應用物件的 add_url_rule() 方法,這將會修改程式例項的路由對映列表。
藍圖的使用
# -*- encoding: utf-8 -*-
# 使用藍圖需要依賴blueprint庫
from flask import flask,blueprint
# 匯入自定義的藍**件
from day06_part import mypart
# 建立物件
# 載入配置檔案
# 註冊定義好的藍**件
# 如果有url_prefix就需要在進入路由時傳倆個引數。因為在mypart中已經傳入乙個引數了
# 給藍圖的url加字首。/part
# 如果字首名稱一致,會覆蓋主模組
# 配置路由
def index():
return '這裡是主模組首頁'
# 程式入口
if __name__ == "__main__":
再來看附模組
在新建乙個py
# -*- encoding: utf-8 -*-
from flask import flask, blueprint
# 註冊藍圖
mypart = blueprint('mypart',__name__)
@mypart.route('/part')
def my_part():
return '這裡是部分功能'
@mypart.route('/test')
def my_test():
return '這裡是部分功能test'
其中兩個檔案相輔相成, 不喜輕噴。 繼承中的一些問題
1.本質 達到 復用,子類可以復用父類的方法和屬性 2.繼承關係中構造方法的呼叫關係 子類的任何乙個構造方法,總是會呼叫父類中的某乙個構造方法 預設情況下,呼叫父類無參構造方法 可以使用super關鍵字,在子類構造方法中的第一行呼叫 父類指定的構造方法 3.方法覆蓋 重寫 覆蓋了父類的方法 要求 同...
Word中的一些問題
在做畢業 時,有一些人在用word的分隔符時常常遇到問題,在這裡我給大家說一下,用分隔符的目的是為了區分各個部分頁面的不同而出現的。有分隔符和分欄符之分。如果你大學還沒有畢業,還沒有開始寫畢業 那麼這個你一定要學會,因為畢業 是有他自己的格式的,老師會要求你用那種頁首 那種頁尾 那種頁碼,要求是很嚴...
事務中的一些問題
size medium 近期遇到了不少併發和事務問題,總結如下 color green 1.鎖 必須在取資料之前。現在的事務主要是通過鎖資料並通過在後面的校驗中驗證狀態實現的,要注意,後面的驗證資料一定要是加鎖之後取出來的資料,比如驗證訂單狀態能否進行當前操作時 要重新取一下訂單。2.鎖的粒度 原則...