Flask 教程,第一部分:Hello,World!

應用

作爲這個教程的一部分,我即將要開發一個專門用於發送微博服務的應用,我叫它微博(無聊的名字),相當給力,我當然知道,哈!

我在開發這個應用的過程中會涉及到如下幾個話題:

  • 用戶管理,包括登錄管理,會話,用戶角色,個人檔案及用戶頭像。

  • 數據庫管理,包括數據庫遷移處理。

  • Web表單支持,包括字段檢驗和用於防止垃圾郵件的驗證碼功能。

  • 大數據的分頁功能。

  • 全文檢索。

  • 用戶郵件通知。

  • HTML和RSS模板。

  • 多語言支持。

  • 緩存和其它性能優化。

  • 用於開發和生產環境服務器上的調試技術。

  • 生產環境服務器上的部署安裝。

正如你所看到的,整個過程我將花費不少精力。我希望這個應用,當它開發完成後,將作爲一種編寫其它web應用的模板。

要求

如果你擁有一臺運行着Python 2.6或者2.7的電腦那麼你可以很好的進行下去。這個教程應用應該可以剛剛好地運行在Windows,OS X和Linux上。

教程假設你熟練終端窗口(對於Windows用戶就是命令行提示CMD)以及瞭解你的操作系統上基本的命令行文件管理函數。如果不是這樣,在繼續我們的教程之前,那麼我推薦你去學一下怎麼創建目錄,複製文件等操作,要利用命令得哦,親!

最後,你應該對於編寫Python代碼有點感覺,不要太菜。對於Python模塊和包這一塊要熟悉是必須的。


安裝Flask

廢話少說,開始吧!

如果你還沒準備好,去安裝Python 2.7吧。

現在我們必須要安裝Flask和服務端擴展,這些都是我們即將要用到的。我偏愛的方式是創建一個虛擬環境,所有東西都已經安裝在這個虛擬環境中了,因此你自已主要的Python安裝環境則不會受影響。附加的一個好處是,用這種方式來安裝時不需要root管理員權限。

好了,打開終端窗口,選擇一個位置用來落腳我們的應用,並且在此創建一個新目錄,這個目錄就叫作microblog。

下一步,下載virtualenv.py,並且把它放進這個新目錄。

敲下以下命令行,用來創建一個虛擬環境:

1python virtualenv.py flask

上面的命令在flask目錄裏面創建一個完整的Python環境。

虛擬環境可以是激活的,也可以是失效的。如果你希望的話,可以將 flask 的 bin 目錄路徑加到系統環境變量 path 的後面。這樣就使虛擬環境爲激活的,當你在終端輸入 python 命令時,你將看到的是環境的版本信息而不是 python 的版本信息。我個人不喜歡這種特性,所以我從來不激活我的環境參數,就只是寫它的完整路徑來進行調用。

如果你的環境是 Linux,OS X or Cygwin,使用以下命令安裝 flask 和 擴張包,按順序一個接一個:

flask/bin/pip install flaskflask/bin/pip install flask-loginflask/bin/pip install flask-openidflask/bin/pip install flask-mailflask/bin/pip install flask-sqlalchemyflask/bin/pip install sqlalchemy-migrateflask/bin/pip install flask-whooshalchemyflask/bin/pip install flask-wtfflask/bin/pip install flask-babelflask/bin/pip install flup

如果你的是 Windows 環境,那麼命令有點不同:

flask\Scripts\pip install flaskflask\Scripts\pip install flask-loginflask\Scripts\pip install flask-openidflask\Scripts\pip install flask-sqlalchemyflask\Scripts\pip install sqlalchemy-migrateflask\Scripts\pip install flask-whooshalchemyflask\Scripts\pip install flask-wtfflask\Scripts\pip install flask-babelflask\Scripts\pip install flup

這些命令會下載和安裝我們應用中所需要的包。

關於SQLAlchemy,需要注意:SQLAlchemy v0.8 並不兼容之前的一些版本。尤其是sqlalchemy-migrate模塊無法和v0.8一起使用。所以我們需要強制安裝v0.7.9,命令如下:

1flask/bin/pip uninstall sqlalchemy
2flask/bin/pip install sqlalchemy==0.7.9

等sqlalchemy-migrate更新到支持SQLAlchemy v0.8的時候再使用吧。

Windows用戶需要多一個步驟。如果你善於觀察,你會注意到上一段中的windows環境包安裝命令並沒安裝flask-mail包,因爲它在windows上安裝時默認會附帶一些其他包,所以我們使用另一個命令來解決:

1flask\Scripts\pip install--no-deps lamson chardet flask-mail

關於這個問題,我不會進入細節,如果你想要了解更多,請參考flask-mail的官方文檔。

如果你成功安裝完了所有包,那你可以刪除virtualenv.py了(譯者注:這個是作者的個人喜好,可以不用刪),因爲我們不再需要它了。

通過Flask創建 "Hello, World"

現在在你的微博文件夾下有一個flask字文件夾,它被加入了一段Python註釋,而且我們將在App應用中使用Flask框架和它的擴展。現在讓我們來寫我們的第一個web應用吧。

在你通過cd命令行進到微博文件夾下後,讓我們來創建我們應用的文件結構:

1mkdirapp
2mkdirapp/staticmkdirapp/templates
3mkdirtmp

我們將把應用的包存放在這個app文件夾下。這個靜態子文件件夾我們用來放諸如圖片、JS或者CSS之類的文件,而template子文件夾則明顯用於存放template文件的。

現在讓我們來給我們的app包創建一個簡單的初始化腳本(app/__init__.py)。

1fromflaskimportFlask app=Flask(__name__)fromappimportviews

上面的這段簡單的腳本創建了Flask類的應用對象然後導入我們還沒寫的views視圖模塊。

這個模塊相當於一個執行者來返回用戶的web請求。在Flask中,視圖一般會被作爲Python寫出,每一個視圖映射一個或者多個URL

下面讓我們來寫第一個視圖功能(app/views.py):

1fromappimportapp @app.route('/') @app.route('/index')defindex

這個視圖非常的簡單,它僅僅就是返回一個string語句,先後顯示在用戶的web瀏覽器上。功能上的兩條路徑連接這從urls/and/index到這個功能的映射。

下面,使web應用能完全運行的最後一步就是創建一個能啓動我們開發的這個應用web服務器的腳本。我們叫它scriptrun.py。

1#!flask/bin/python from app import app
2app.run(debug=True)

這段腳本只是從我們的app包中導入了app的變量,然後調用它的方法來啓動服務器。記住,這個變量保存着我們上面創建的Flask實例。

運行下面這段腳本就可以啓動的應用。當在X、Linux或者Cygwin系統上運行時,在運行之前,你必須指明這是一個可執行文件:

1chmod a+x run.py

然後這段腳本會被執行,如下:

1./run.py

當在Windows環境下運行時,進程將會有點不同,你沒必要指明這是個可執行文件。然而,你必須把它當作Python註釋的自變量來運行它。

1flask/Scripts/python run.py

當服務器初始化之後,它將會監聽5000端口,然後等待連接。現在打開你的瀏覽器然後在地址欄輸入下面的地址:

或者你也可以用下面的這個URL:

你看到這個action中的映射路徑了嗎?第一個URL指向/。然而第二個指向/index。這兩個路徑都關聯到我們的視圖,所以呈現的是相同的結果。如果你輸入其他路徑的話將會報錯,因爲只有這兩個路徑被映射到這個視圖中。

當你結束服務器操作時你指數要按住Ctrl-C來停止。然後到此我餓結束了這第一個安裝指南。

對於那些懶於敲鍵盤的人。你可以直接從下面指南中下載代碼:

Downloadmicroblog-0.1.zip.

注意,在運行應用之前。你仍然需要先安裝上文提到的Flask。

下面幹嘛?

在這個系列的下一章節,我會修改這個小應用來使用HTML模板。希望你還能繼續看我的下一章節。。0


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章