flask 帶你快速入門

2021-08-07 12:27:49 字數 3278 閱讀 7121

建立乙個python檔案:hello.py

from flask import flask

defhello_world

():#檢視函式

return

'hello world!'

#返回乙個字串

if __name__ == '__main__':

用python直譯器來執行

$ python hello.py

* running on

上面**

首先,我們匯入了 flask 類。這個類的例項將會是我們的 wsgi 應用程式

接下來,我們建立乙個該類的例項,第乙個引數是應用模組或者包的名稱。 如果你使用單

塊(如本例),你應該使用name,因為模組的名稱將會因其作為單獨應用啟動還是作

塊匯入而有不同( 也即是 『main』 或實際的匯入名)。這是必須的,這樣 flask 才知道

去找模板、靜態檔案等等。詳情見 flask的文件。

然後,我們使用 route() 裝飾器告訴 flask 什麼樣的url 能觸發我們的函式。

這個函式的名字也在生成 url 時被特定的函式採用,這個函式返回我們想要顯示在使用者瀏

的資訊。

最後我們用 run() 函式來讓應用執行在本地伺服器上。 其中 ifname==』main『: 確保服

只會在該指令碼被 python 直譯器直接執行的時候才會執行,而不是作為模組匯入的時候。

關閉伺服器,按 ctrl+c。

# 修改呼叫 run() 的方法使你的伺服器公開

可用

雖然 run() 方法適用於啟動本地的開發伺服器,但是你每次修改**後都要手動重啟它。這樣並不夠

優雅,而且 flask 可以做到更好。如果你啟用了除錯支援,伺服器會在**修改後自動重新載入,並

在發生錯誤時提供乙個相當有用的偵錯程式。就算出錯了,也不用重新啟動。

有兩種途徑來啟用除錯模式。一種是直接在應用物件上設定:

另一種是作為 run 方法的乙個引數傳入:

兩種方法的效果完全相同。

這裡是一些基本的例子:

defindex

():return

'index'

defhello

():return

''客戶端(例如 web 瀏覽器)把請求傳送給 web 伺服器, web 伺服器再把請求傳送給 flask程式例項。程式例項需要知道對每個 url 請求執行哪些**,所以儲存了乙個 url 到python 函式的對映關 系。處理 url 和函式之間關係的程式稱為路由。

函式的返回值叫響應,是客戶端接收到的內容。如果客戶端是 web 瀏覽器, 響應就是顯示給 使用者檢視的文件。

像index()這樣的,稱為是檢視函式。檢視函式返回的響應可以是包含html的簡單字串,也可以是複雜的表單。

defshowusername

(name):

return

"user %s" %name

defshowpostid

(post_id):

return

"post %d" %post_id

很多url位址都包含可變部分。flask中,只需在route修飾器中使用特殊的句法

尖括號的內容就是動態部分,任何能匹配靜態部分的url都會對映到這個路由上。呼叫檢視函式的時候,flask會將動態部分作為引數傳入函式中。

路由中的動態部分預設是使用字串,不過也可以使用型別定義。。例如,路由 /user/只會匹配動 態片段 id 為整數的 url。 flask 支援在路由中使用 int、 float 和 path 型別。path 型別也是字串,但不把斜線視作分隔符,而將其當作動態片段的一部分。

變數規則就是處理動態資訊的。

【注意】

如果是int或者float型別,不能直接return。必須轉換為字串格式才可以,否則會報錯: typeerror: 『int』 object is not callable

defredir

():return redirect('/login/')

deflogin

():

abort(401)

使用者會從/redir/重定向到乙個不能訪問的頁面 (401 意味著禁止訪問)。

用url_for()來給指定的函式生成url。它接受函式名作為第乙個引數,也接受對應url規則的變數部分的命名引數。

defworld

():# return redirect('/hello/')

# return redirect(url_for('hello'))

# return redirect(url_for('showusername',name = 'liusheng'))

return redirect(url_for('showpostid', post_id = 100)) # 注意這裡的100可以是字串也可以是整型

使用url_for()生成 url 的好處:

- 允許一次性修改 url,而不用到處邊找邊改。

- url 構建會轉義特殊字元和 unicode 資料,免去你很多麻煩。

flask-script是乙個flask擴充套件,為flask程式新增了乙個命令列解析器。flask-script 自帶了 一組常用選項,而且還支援自定義命令。

flask-script 擴充套件使用 pip 安裝:

(venv) $ pip install flask-script
把命令列解析功能新增到 hello.py 程式中時需要修改的地方:

from flask_script import manager 

if __name__ == '__main__':

manager.run()

這樣修改之後,程式可以使用一組基本命令列選項。

我們執行 python hello.py runserver 來啟動 web 服 務器。

--host host 設定host為 host

--port port 設定port為 port

-d 設定以debug模式執行而非run模式

命令:

python hello.py runserver -d

-r--host 0.0

.0.0

flask 帶你快速入門

from flask import flask defhello world 檢視函式 return hello world 返回乙個字串 if name main python hello.py running on接下來,我們建立乙個該類的例項,第乙個引數是應用模組或者包的名稱。如果你使用單 塊...

Flask快速入門

關於flask的翻譯文章還挺多的 1.翻譯的挺好,比較容易懂,有些錯別字 2.感覺翻譯的比較生硬,比機器翻譯好些 3.未仔細度過,感覺應該介於以上兩者之間 4.多個與flask相關的翻譯專案 flask docs cn flask sqlalchemy docs cn flask wtf docs ...

flask快速入門

from flask import flask defhello world return hello world if name main 除錯模式在url中的路徑可以當做變數傳到相應的處理函式裡面 defshow user profile username show the user profi...