Flask二之快速入門

2021-09-16 12:39:21 字數 3439 閱讀 4322

from flask import flask

#路由裝飾器

def hello_world():

#檢視函式

return 'hello world!'

#返回乙個字串

if __name__ == '__main__':

把程式儲存為hello.py 用python直譯器執行

$ python hello.py

* running on

訪問 ,會看見 hello world 問候。欲關閉伺服器,按 ctrl+c。

這段**做了什麼?

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

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

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

塊匯入而有不同( 也即是 '__main__' 或實際的匯入名)。這是必須的,這樣 flask 才知道到哪

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

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

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

的資訊。

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

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

如果你啟用了除錯支援,伺服器會在**修改後自動重新載入,並在發生錯誤時提供乙個相當有用的偵錯程式。

有兩種途徑來啟用除錯模式:

一種是直接在應用物件上設定:

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

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

【注意】

def index():

return 'index'

def hello():

return ''

這個函式的返回值稱為響應,是客戶端接收到的內容。

像 index() 這樣的函式稱為檢視函式(view function)。檢視函式返回的響應可

以是包含html 的簡單字串,也可以是複雜的表單。

def showusername(name):

return "user %s" %name

def showpostid(post_id):

return "post %d" %post_id

flask 支援在路由中使用 int、 float 和 path 型別。path 型別也是字串,但

不把斜線視作分隔符,而將其當作動態片段的一部分。

int | 接受整數

float | 接受浮點數

path | 和預設的相似,但也接受斜線

變數規則的意義:處理動態資訊。

【注意】

如果是int或float型別,不能直接return!必須要轉換為字串格式才可以,否

則會報錯:typeerror: 'int' object is not callable

def about():

return 'the about page'

雖然它們看起來著實相似,但它們結尾斜線的使用在 url 定義 中不同:

- 第一種情況中,指向 about的規範 url 尾端有乙個斜線。這種感覺很像在檔案系

統中的資料夾。訪問乙個結尾不帶斜線的 url 會被 flask 重定向到帶斜線的規範

url 去。因此, 強烈建議統一加上斜線!

- 第二種情況的 url 結尾不帶斜線,類似 unix-like 系統下的檔案的路徑名。訪問

結尾帶斜線的url 會產生乙個 404 「not found」 錯誤。

這個行為使得在遺忘尾斜線時,允許關聯的 url 接任工作,與 apache 和其它的服

務器的行為並無二異。此外,也保證了 url 的唯一,有助於避免搜尋引擎索引同一

個頁面兩次。

def redir():

return redirect('/login/')

def login():

abort(401)

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

用 url_for()來給指定的函式生成(構造) url。它接受函式名作為第乙個引數,

也接受對應 url 規則的變數部分的命名引數。例如:

def world():

# 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 而非在模板中硬編碼的好處:

1. 反向構建通常比硬編碼的描述性更好。允許一次性修改 url,而不用到處邊找邊改。

2. 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()

修改之後程式可以使用一組基本命令列選項來啟動 web 伺服器。:

python hello.py runserver
--host host  |設定host為 host

--port port |設定port為 port

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

標準命令:

python hello.py runserver -d -r --host 0.0.0.0

python hello.py runserver -d -r --port:5001

Flask入門二 快速入門

from flask import flask 路由裝飾器 defhello world 檢視函式 return hello world 返回乙個字串 if name main 把程式儲存為hello.py 用python直譯器執行 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...