1. 程式人生 > >Flask系列教程(一)-----------入門

Flask系列教程(一)-----------入門

Flask是一個基於Python的web框架,它的設計目的是提供Web開發所需的最小功能子集。

Flask與別的框架(尤其是採用其他程式語言的框架)的不同之處在於:它沒有繫結諸如資料庫查詢或者表單處理等功能庫,以及它們所組成的整個生態系統。它傾向於對這些功能的實現方式不做任何限定。

這種系統帶來的主要好處是:開發者能夠使用他們想用的任何方式和工具,去設計他們的應用架構。另外,對於一些常見的通用功能,Flask沒有以某種特定方式去實現,這意味著在Flask中,對標準庫的使用會比其他框架裡多,這保證了通用功能的穩定性及針對其他Python程式設計師的可讀性。由於Flask社群十分龐大,所以該社群提供的新增通用功能的方式非常多。所以通過本系列教程,瞭解它們如何幫助我們避免重複造輪子。這些擴充套件的妙處在於,如果不需要那些額外的功能,就不用引入它們,這樣我們的應用才會保持簡潔、輕量。

這種系統的最大弊端是,大部分新的Flask使用者不知道如何正確地規劃大型應用的結構,最後弄出一大堆讓人難以理解和維護的程式碼。所以本教程另一個重點是如何為Flask應用建立模型/檢視/控制器(MVC)架構。


MVC體系在最初被髮明時,主要用來設計桌面應用的使用者介面。它將資料處理(model),互動邏輯(controller)和使用者介面(view)隔離成三層不同的元件。

這三層元件的隔離,使得程式設計師不用為每個網頁重新實現一遍相同的功能,而是隻要重用那些程式碼。比如,若是沒有把處理資料的程式碼拆分到單獨的函式中,那麼我們不得不在每個頁面的渲染函式裡,把同樣的資料庫連線程式碼和SQL查詢程式碼都寫一遍。


我們將使用git做為版本控制軟體,開發環境為ubuntu.python版本為3.4.3

安裝flask

使用pip安裝,由於是在python3環境中,所以使用pip3.

pip3 install flask

使用git做版本管理

建立工程目錄

mkdir flask_tutorials

切換到工程目錄

cd flash_tutorilas

初始化版本庫

git init

建立版本庫過濾檔案

touch .gitignore

向.gitignore檔案中寫入以下內容,過濾env目錄,python的編譯檔案:

cat .gitignore
env/
*.pyc



開始我們的專案

config.py:

class Config(object):
    pass
class ProdConfig(Config):
    pass
class DevConfig(Config):
    DEBUG = True

main.py:

from flask import Flask
from config import DevConfig

app = Flask(__name__)
app.config.from_object(DevConfig)

@app.route('/')
def home():
    return '<h1>Hello World!</h1>'
if __name__ == '__main__':
    app.run()

對於一些瞭解Flask API的讀者來說,這個程式非常基礎,它只是在我們訪問http://127.0.0.1:5000的時候,在瀏覽器中顯示一行"Hello World!"。另外,Flask使用者可能很不熟悉的一個地方是,這裡使用了config.from_object,而不是app.confing['DEBUG']。使用from_object是因為未來我們會加入很多配置項,如果要在不同的配置之間切換,那麼手動去改每個變數是一件煩瑣乏味的事。

提交我們的程式碼

git add --all

git commit -m "your comment"

啟動web服務

[email protected]:~/python/flask_tutorials$ python3 main.py
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger pin code: 267-148-615

使用flask-script

Flask有眾多擴充套件,我們將首先使用Flask Script擴充套件。使用它可以建立命令,並在Flask的應用上下文中執行,因為這樣才能對Flask物件進行修改。

Flask Script自帶了一些預設的命令,可以執行伺服器或者開啟帶應用上下文的Python命令列。

安裝

pip3 install flask-script

使用

先建立一個簡單的manage.py指令碼。

manage.py:

首先,匯入Flask Script物件,程式碼如下:

from flask_script import Manager, Server
from main import app

然後把你的app傳給Manager物件,以初始化Flask Script:
manager = Manager(app)

現在我們來新增一些命令。這裡執行的伺服器跟通過main.py執行的普通開發伺服器是一樣的。make_shell_context函
數會建立一個Python命令列,並且在應用上下文中執行。返回的字典告訴Flask Script在開啟命令列時進行一些預設
的匯入工作。
manager.add_command("server", Server())

@manager.shell
def make_shell_context():
    return dict(app=app)

通過manage.py執行命令列在將來會十分必要,因為一些Flask擴充套件只有在Flask應用物件被建立之後才會被初始化。直接
執行預設的Python命令列會令這些擴充套件返回錯誤。


然後,在檔案結尾新增如下程式碼,這是Python的標準方式,用來限制僅在使用者直接執行檔案的時候,才執行上面的
程式碼:
if __name__ == "__main__":
    manager.run()

現在你可以這樣來執行開發環境伺服器:
Z:\python\flask_tutorials>python manage.py server
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger pin code: 273-062-909

以及使用命令列
Z:\python\flask_tutorials>python manage.py shell
#我們來看下app有沒有被正確匯入
>>> app
<Flask 'main'>
>>>
總結

現在我們已經搭建了開發環境,可以繼續在Flask裡面實現更高階的特性了。