# chapter2 flask 程式的基本結構
## 一、初始化 flask
2. name引數決定了程式的根目錄
## 二、路由和檢視函式
2. 修飾器是python的標準特性,修改函式的行為,常用於把函式註冊為事件的處理程式
3. 特定的url觸發伺服器執行相應的函式,函式的返回值稱為**響應**,該函式稱為**檢視函式**
4. `@aap.route('/user/')`匹配包含可變部分的url,尖括號內是動態部分,匹配靜態部分的url都會對映到路由上,動態部分作為引數傳入檢視函式
## 三、啟動伺服器
## 四、完整程式
1. 在位址列輸入`可見檢視函式的響應
## 五、請求-響應迴圈
1. 上下文
a). 為了讓檢視函式訪問請求物件,可將其作為引數傳入檢視函式,但會增加函式的引數。flask使用**上下文**臨時把某些物件變為全域性可訪問。
b). flask讓特定的變數在乙個執行緒中全域性可訪問,與此同時卻不會干擾其他執行緒。
> 避免大量重複引數的訪問導致檢視函式**重複、亂的問題,flask使用**上下文**使一些變數在乙個執行緒中全域性可訪問,不會干擾其它執行緒
c). flask有兩種上下文:
* 請求上下文`request, sessiom`
2. 請求排程
c). 程式收到客戶端發來的請求時,要找到處理該請求的檢視函式
3. 請求鉤子
a). 避免檢視函式**的重複,可用**請求鉤子**:flask提供註冊通用函式的功能,可在請求被
分發到檢視函式之前或之後呼叫
b). flask支援4種鉤子:
* `before_first_request`:第乙個請求前執行
* `before_request`:每一次請求前執行
* `after_request`:沒有未處理的異常丟擲時,在每次請求之後執行
* `teardown_request`:即使有異常,每次請求後執行
c). 請求鉤子函式與檢視函式之間用`g`變數共享資料。例如`before_request`處理程式從資料庫中載入已登入使用者,並儲存到`g.user`中,檢視函式再使用`g.user`獲取使用者
4. 響應
a). 檢視函式的返回值就是響應;可以新增**狀態碼**返回,預設值是200,表明請求被成功處理;響應可新增第三個引數,由首部`(header)`組成的字典,不常用
b). 使用`make_response`函式返回`response`物件,然後在響應物件上呼叫各種方法,進一步設定響應
```d). `abort()`產生了一種特殊響應,用於處理錯誤,返回狀態碼404;abort不會吧控制權交還給呼叫它的檢視函式,而是丟擲異常把控制權交給web伺服器
## 六、flask擴充套件
讀書筆記 1
從我第一次看到windows就對它那花花綠綠的外表所吸引,大學兩年過來,時間又讓我從另乙個角度重新認識的了這些美麗的。本學期開始圖形程式設計的學習,探索windows圖形系統,並對gdi api,directdraw api進行學習。之所以寫部落格,第 一 是想勉勵自己不斷學習,讓大家監督 第 二 ...
讀書筆記1
netstat p525 網路資訊服務是通過本地查詢,還是要連線到遠端資料庫 p527 網路配置檔案?服務資訊函式?linux下如何組網 p527 如何設定計算機的主機名 p528 套接字 第15章 套接字 套接字 p513,523 what 套接字 一種程序間通訊機制 不僅可以本地程序通訊,也可以...
讀書筆記 1
條款01 視c 為乙個語言聯邦 條款02 盡量以const,enum,inline替換 define 條款03 盡可能使用const 條款04 確定物件被使用前已先被初始化 條款05 了解c 默默編寫並呼叫哪些函式 什麼時候empty class不再是個empty class呢?當c 處理過它之後....