Flask學習筆記(四)從helloworld開始

2021-10-07 18:19:12 字數 3118 閱讀 3891

所有flask程式必須有乙個程式例項。

flask呼叫檢視函式後,會將檢視函式的返回值作為響應的內容,返回給客戶端。一般情況下,響應內容主要是字串和狀態碼。

當客戶端想要獲取資源時,一般會通過瀏覽器發起http請求。此時,web伺服器使用wsgi(web server gateway inte***ce)協議,把來自客戶端的所有請求都交給flask程式例項。wsgi是為 python 語言定義的web伺服器和web應用程式之間的一種簡單而通用的介面,它封裝了接受http請求、解析http請求、傳送http,響應等等的這些底層的**和操作,使開發者可以高效的編寫web應用。

程式例項使用werkzeug來做路由分發(url請求和檢視函式之間的對應關係)。根據每個url請求,找到具體的檢視函式。 在flask程式中,路由的實現一般是通過程式例項的route裝飾器實現。route裝飾器內部會呼叫add_url_route()方法實現路由註冊。

呼叫檢視函式,獲取響應資料後,把資料傳入html模板檔案中,模板引擎負責渲染響應資料,然後由flask返回響應資料給瀏覽器,最後瀏覽器處理返回的結果顯示給客戶端。

新建檔案hello.py:

# 匯入flask類

from flask import flask

#flask類接收乙個引數__name__

# 裝飾器的作用是將路由對映到檢視函式index

def index():

return 'hello world'

# flask應用程式例項的run方法啟動web伺服器

if __name__ == '__main__':

檢視檢視函式中的路由:

給路由傳參示例:

有時我們需要將同一類url對映到同乙個檢視函式處理,比如:使用同乙個檢視函式 來顯示不同使用者的個人資訊。

# 路由傳遞的引數預設當做string處理,這裡指定int,尖括號中冒號後面的內容是動態的

返回狀態碼示例:

return後面可以自主定義狀態碼(即使這個狀態碼不存在)。當客戶端的請求已經處理完成,由檢視函式決定返回給客戶端乙個狀態碼,告知客戶端這次請求的處理結果。

abort函式:

如果在檢視函式執行過程中,出現了異常錯誤,我們可以使用abort函式立即終止檢視函式的執行。通過abort函式,可以向前端返回乙個http標準中存在的錯誤狀態碼,表示出現的錯誤資訊。

使用abort丟擲乙個http標準中不存在的自定義的狀態碼,沒有實際意義。如果abort函式被觸發,其後面的語句將不會執行。其類似於python中raise。

from flask import flask,abort

def hello_itcast():

abort(404)

return 'hello itcast',999

捕獲異常:

在flask中通過裝飾器來實現捕獲異常,errorhandler()接收的引數為異常狀態碼。檢視函式的引數,返回的是錯誤資訊。

def error(e):

return '您請求的頁面不存在了,請確認後再次訪問!%s'%e

重定向redirect示例

正則url示例:

正則url是為了匹配指定的url,而匹配指定的url則可以達到限制訪問,以及優化訪問路徑的目的。

from flask import flask

from werkzeug.routing import baseconverter

class regex_url(baseconverter):

def __init__(self,url_map,*args):

super(regex_url,self).__init__(url_map)

self.regex = args[0]

def hello_itcast(id):

return 'hello %s' %id

設定cookie和獲取cookie

#獲取cookie

Flask學習筆記(四)

進入虛擬環境 我的電腦的虛擬環境在f盤裡,命令列進入f盤後,直接打入virtualenv flask env scripts activate即可進入我的虛擬環境中使用flask。退出虛擬環境 deactivate 1.dialect driver username password host po...

Flask 學習筆記 四 引數接收

路徑引數 請求引數 from flask import flask def params heh print type heh print heh return test params if name main 執行後訪問 列印結果為 lala 可見傳遞引數預設為字串型別 def params he...

Flask學習回顧(四)

關於csrf token from flask import flask,render template,request,flash from flask wtf import flaskform from wtforms import stringfield,passwordfield,submi...