1. 程式人生 > 實用技巧 >Flask web框架基礎入門筆記(1)

Flask web框架基礎入門筆記(1)

一 、Flask 安裝

在此不做介紹

二 新建一個最小的web應用

那麼這段程式碼做了什麼?

首先我們匯入了類 Flask。這個類的例項化將會是我們的 WSGI 應用。

接著,我們建立一個該類的例項。第一個引數是應用模組或包的名稱,這樣 Flask 才會知道去哪裡尋找模板、靜態檔案等等。如果你使用的是單一的模組(就如本例),第一個引數應該使用 name

我們使用裝飾器 route() 告訴 Flask 哪個 URL 才能觸發我們的函式。

定義一個函式,該函式名也是用來給特定函式生成 URLs,並且返回我們想要顯示在使用者瀏覽器上的資訊。

三 、路由

3.1 路由介紹

正如上面所說,route

裝飾器是用於把一個函式繫結到一個 URL 上。

# hello.py
from flask import Flask

app = Flask(__name__)
# 如果訪問根目錄 '/' ,返回 Index Page
@app.route('/')
def index():
    return 'Index Page'

# 如果訪問 '/hello' ,返回 Hello, World!
@app.route('/hello')
def hello():

    print("你好")
    return '你好'
hello()

3.2 變數規則

為了給 URL 增加變數的部分,你需要把一些特定的欄位標記成 <variable_name> 。這些特定的欄位將作為引數傳入到你的函式中。當然也可以指定一個可選的轉換器通過規則<converter:variable_name> 將變數值轉換為特定的資料型別。

from flask import Flask

app = Flask(__name__)

# 如果訪問根目錄 '/' ,返回 Index Page
@app.route('/')
def index():
    return 'Index Page'
#如果訪問’/hello‘,返回Hello,World
def hello():

    print("你好")
    return '你好'

@app.route('/user/<username>')
def show_user_profile(username):
    #顯示使用者名稱
    return 'User {}'.format(username)

@app.route('/post/<int:post_id>')
def show_post(post_id):
    #顯示提交整型的使用者"id"的結果,注意"int"是將輸入的字串形式轉換為整型資料
    return 'Post {}'.format(post_id)

@app.route('/path/<path:subpath>')
def show_subpath(subpath):
    # 顯示 /path/之後的路徑名
    return 'Subpath {}'.format(subpath)

hello()

轉換器的主要型別如下:

型別 含義
string 預設的資料型別,接受沒有任何斜槓“/”的字串
int 接受整型
float 接受浮點型別
path 和 string 類似,但是接受斜槓“/”
uuid 只接受 uuid 字串

3.3 唯一URLs/重定向行為

Flask 的 URL 規則是基於 Werkzeug 的 routing 模組。該模組背後的思路是基於 Apache 和早期的 HTTP 伺服器定下先例確保優雅和唯一的 URL。

@app.route('/projects/')
def projects():
    return 'The project page'

@app.route('/about')
def about():
    return 'The about page'

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

第一種情況中,規範的 URL 指向 projects 尾端有一個斜線 / 。這種感覺很像在檔案系統中的資料夾。訪問一個結尾不帶斜線的 URL 會被 Flask 重定向到帶斜線的規範 URL 去。當訪問 http://***/projects/ 時,頁面會顯示 The project page

然而,第二種情況的 URL 結尾不帶斜線,類似 UNIX-like 系統下的檔案的路徑名。此時如果訪問結尾帶斜線的 URL 會產生一個 404 “Not Found” 錯誤。當訪問 http://***/about 時,頁面會顯示 The about page ;但是當訪問 http://***/about/ 時,頁面就會報錯 Not Found

當用戶訪問頁面忘記結尾斜線時,這個行為允許關聯的 URL 繼續工作,並且與 Apache 和其它的伺服器的行為一致,反之則不行,因此在程式碼的 URL 設定時斜線只可多寫不可少寫;另外,URL 會保持唯一,有助於避免搜尋引擎索引同一個頁面兩次。