08-01 01—05


1. Flask 中正則 URL 的實現?

app.route(' ')中 URL 顯式支持 string、int、float、path uuid any 6種類型,隱式支持正則。
第一步:寫正則類,繼承 BaseConverter,將匹配到的值設置為 regex 的值。

1. class RegexUrl(BaseConverter): 
2.      def __init__(self, url_map, *args): 
3.      	super(RegexUrl, self).__init__(url_map) 
4.      	self.regex = args[0] 

第二步:把正則類賦值給我們定義的正則規則。

5. app.url_map.converters['re'] = RegexUrl 

第三步:在 URL 中使用正則。

6. @app.route('/regex/<re("[a-z]{3}"):id>') 
7. def regex111(id): 
8.    return 'id:%s'%id 

2. Flask 中請求上下文和應用上下文的區別和作用?

current_app、g 是應用上下文。
request、session 是請求上下文。
手動創建上下文的兩種方法:

1. with app.app_context() 
2. app = current_app._get_current_object() 

兩者區別:
請求上下文:保存了客戶端和服務器交互的數據。
應用上下文:flask 應用程序運行過程中,保存的一些配置信息,比如程序名、數據庫連接、應用信息等。
兩者作用:
請求上下文(request context):
Flask從客戶端收到請求時,要讓視圖函數能訪問一些對象,這樣才能處理請求。請求對象是一個很好的例子,它封裝了客戶端發送的HTTP請求。
要想讓視圖函數能夠訪問請求對象,一個顯而易見的方式是將其作為參數傳入視圖函數,不過這會導致程序中的每個視圖函數都增加一個參數,除了訪問請求對象,如果視圖函數在處理請求時還要訪問其他對象,情況會變得更糟。為了避免大量可有可無的參數把視圖函數弄得一團糟,
Flask使用上下文臨時把某些對象變為全局可訪問。
應用上下文(application context):
它的字面意思是 應用上下文,但它不是一直存在的,它只是request context 中的一個對 app 的代理(人),所謂local proxy。它的作用主要是幫助 request 獲取當前的應用,它是伴 request 而生,隨 request 而滅的。

3. Flask中數據庫設置?

 app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@127.0.0.1:3306/test' 

動態追蹤修改設置,如未設置只會提示警告

 app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True 

查詢時會顯示原始SQL語句

 app.config['SQLALCHEMY_ECHO'] = True 

4. 常用的SQLAlchemy查詢過濾器?

5. 對Flask藍圖(Blueprint)的理解?

1) 藍圖的定義
藍圖 /Blueprint 是Flask應用程序組件化的方法,可以在一個應用內或跨越多個項目共用藍圖。
使用藍圖可以極大地簡化大型應用的開發難度,也為 Flask擴展 提供了一種在應用中注冊服務的集中式機制。
2) 藍圖的應用場景

  1. 把一個應用分解為一個藍圖的集合。這對大型應用是理想的。一個項目可以實例化一個應用對象,初始化幾個擴展,並注冊一集合的藍圖。
    2. 以 URL 前綴和/或子域名,在應用上注冊一個藍圖。 URL 前綴/子域名中的參數即成為這個藍圖下的所有視圖函數的共同的視圖參數(默認情況下)。
    3. 在一個應用中用不同的 URL 規則多次注冊一個藍圖。
    4. 通過藍圖提供模板過濾器、靜態文件、模板和其它功能。一個藍圖不一定要實現應用或者視圖函數。
    5. 初始化一個 Flask 擴展時,在這些情況中注冊一個藍圖。
    3) 藍圖的缺點
    不能在應用創建后撤銷注冊一個藍圖而不銷毀整個應用對象。
    4) 使用藍圖的三個步驟
    1.創建 一個藍圖對象
 blue = Blueprint("blue",__name__) 

2.在這個藍圖對象上進行操作 ,例如注冊路由、指定靜態文件夾、注冊模板過濾器

 @blue.route('/') 
	 def blue_index(): 
	    return 'Welcome to my blueprint' 

3.在應用對象上注冊這個藍圖對象

 app.register_blueprint(blue,url_prefix='/blue') 

字段對象 說明
FieldList 一組指定類型的字段
WTForms常用驗證函數
InputRequired 確保字段中有數據
DataRequired 確保字段中有數據並且數據為真
EqualTo 比較兩個字段的值,常用於比較兩次密碼輸入
Length 驗證輸入的字符串長度
NumberRange 驗證輸入的值在數字范圍內
URL 驗證URL
AnyOf 驗證輸入值在可選列表中
NoneOf 驗證輸入值不在可選列表中
使用Flask-WTF需要配置參數SECRET_KEY。
CSRF_ENABLED是為了CSRF(跨站請求偽造)保護。 SECRET_KEY用來生成加密令牌,當CSRF激活的時候,該設置會根據設置的密匙生成加密令牌。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM