安裝 Flask 最便捷的方式是使用虛擬環境。虛擬環境是 Python 解釋器的一個私有副本,在這個環境中你可以安裝私有包,而且不會影響系統中安裝的全局 Python 解釋器。虛擬環境非常有用,可以在系統的 Python 解釋器中避免包的混亂和版本的沖突。為每個程序單獨創建虛擬環境可以保證程序只能訪問虛擬環境中的包,從而保持全局解釋器的干凈整潔,使其只作為創建(更多)虛擬環境的源。使用虛擬環境還有個好處,那就是不需要管理員權限。
如果你使用微軟的 Windows 系統,進入https://bitbucket.org/pypa/setuptools,下載安裝腳本ez_setup.py。把這個文件保存到電腦的一個臨時文件夾中,然后在這個文件夾中執行以下命令:
$ python ez_setup.py $ easy_install virtualenv上述命令必須以具有管理員權限的用戶身份執行。在微軟 Windows 系統中,請使用“以管理員身份運行”選項打開命令行窗口;在基于 Unix 的系統中,要在上面兩個命令前加上 sudo ,或者以根用戶身份執行。一旦安裝完畢,virtualenv 實用工具就可以從常規賬戶中調用。
現在你要新建一個文件夾,用來保存示例代碼(示例代碼可從 GitHub 庫中獲取)。我們在前言的“如何使用示例代碼”一節中說過,獲取示例代碼最簡便的方式是使用 Git 客戶端直接從 GitHub 下載。下述命令從 GitHub 下載示例代碼,并把程序文件夾切換到“1a”版本,即程序的初始版本:
$ git clone https://github.com/miguelgrinberg/flasky.git$ cd flasky$ git checkout 1a下一步是使用 virtualenv 命令在 flasky 文件夾中創建 Python 虛擬環境。這個命令只有一個必需的參數,即虛擬環境的名字。創建虛擬環境后,當前文件夾中會出現一個子文件夾,名字就是上述命令中指定的參數,與虛擬環境相關的文件都保存在這個子文件夾中。按照慣例,一般虛擬環境會被命名為 venv :
$ virtualenv venvNew python executable in venv/bin/python2.7Also creating executable in venv/bin/pythonInstalling setuptools............done.Installing pip...............done.現在,flasky 文件夾中就有了一個名為 venv 的子文件夾,它保存一個全新的虛擬環境,其中有一個私有的 Python 解釋器。在使用這個虛擬環境之前,你需要先將其“激活”。如果使用微軟 Windows 系統,激活命令是:
$ venv/Scripts/activate虛擬環境被激活后,其中 Python 解釋器的路徑就被添加進 PATH 中,但這種改變不是永久性的,它只會影響當前的命令行會話。為了提醒你已經激活了虛擬環境,激活虛擬環境的命令會修改命令行提示符,加入環境名:
(venv) $當虛擬環境中的工作完成后,如果你想回到全局 Python 解釋器中,可以在命令行提示符下輸入 deactivate 。
使用 pip 安裝Python包使用 virtualenv 創建虛擬環境時會自動安裝pip 。激活虛擬環境后, pip 所在的路徑會被添加進 PATH 。 執行下述命令可在虛擬環境中安裝 Flask:
(venv) $ pip install flask要想驗證 Flask 是否正確安裝,你可以啟動 Python 解釋器,嘗試導入 Flask:
(venv) $ python>>> import flask>>>如果沒有看到錯誤提醒,那恭喜你。
所有 Flask 程序都必須創建一個程序實例。Web 服務器使用一種名為 Web 服務器網關接口 (Web Server Gateway Interface,WSGI)的協議,把接收自客戶端的所有請求都轉交給這 個對象處理。程序實例是 Flask 類的對象,經常使用下述代碼創建:
from flask import Flaskapp = Flask(__name__)Web 服務器使用一種名為 Web 服務器網關接口(Web Server Gateway Interface,WSGI)的協議,把接收自客戶端的所有請求都轉交給這個對象處理。程序實例是 Flask 類的對象Flask 類的構造函數只有一個必須指定的參數,即程序主模塊或包的名字。在大多數程序中,Python 的 __name__變量就是所需的值。
客戶端(例如 Web 瀏覽器)把請求發送給 Web 服務器,Web 服務器再把請求發送給 Flask 程序實例。程序實例需要知道對每個 URL 請求運行哪些代碼,所以保存了一個 URL 到Python 函數的映射關系。處理 URL 和函數之間關系的程序稱為路由。 在 Flask 程序中定義路由的最簡便方式,是使用程序實例提供的 app.route 修飾器,把修飾的函數注冊為路由。下面的例子說明了如何使用這個修飾器聲明路由:
@app.route('/')def index():return '<h1>Hello World!</h1>'修飾器是 Python 語言的標準特性,可以使用不同的方式修改函數的行為。慣常用法是使用修飾器把函數注冊為事件的處理程序。前例把 index() 函數注冊為程序根地址的處理程序。如果部署程序的服務器域名為 www.example.com,在瀏覽器中訪問 http://www.example.com 后,會觸發服務器執行 index() 函數。這個函數的返回值稱為響應,是客戶端接收到的內容。如果客戶端是 Web 瀏覽器,響應就是顯示給用戶查看的文檔。像 index() 這樣的函數稱為視圖函數(view function)。
如果你仔細觀察日常所用服務的某些 URL 格式,會發現很多地址中都包含可變部分。例如, 你 的 Facebook 資 料 頁 面 的 地 址 是 http://www.facebook.com/, 用 戶 名(your-name)是地址的一部分。Flask 支持這種形式的 URL,只需在 route 修飾器中使用特殊的句法即可。下例定義的路由中就有一部分是動態名字:
@app.route('/user/<name>')def user(name):return '<h1>Hello, %s!</h1>' % name尖括號中的內容就是動態部分,任何能匹配靜態部分的 URL 都會映射到這個路由上。調用視圖函數時,Flask 會將動態部分作為參數傳入函數。在這個視圖函數中,參數用于生成針對個人的歡迎消息。
新聞熱點
疑難解答