1. 程式人生 > >初識python輕量web框架flask

初識python輕量web框架flask

引入 輸出 urn 使用 簡單 域名 主動 main return

1.使用pip安裝Python包

大多數Python包都使用pip實用工具安裝,使用pyvenv創建的虛擬環境會自動安裝pip。

1.使用pip安裝Flask(其它Python包同理)

pip install flask

  

2.一個簡單的Demo

from flask import Flask
from flask import abort
from flask import redirect

app = Flask(__name__)

@app.route(‘/‘)
def index():
    return ‘<h1>Hello World!</h1>‘

@app.route(‘/user/<name>‘)
def sayHello(name):
    if name == ‘baidu‘:
        return redirect(‘http://www.baidu.com‘)
    elif name == ‘NO‘:
        return abort(404)

    return ‘<h1> Hello,%s </h1>‘ % name

if __name__ == ‘__main__‘:
    app.run(debug=True)

  

從Demo中學習路由、修飾器、視圖函數、請求、響應概念,一步步分析每行代碼:

0.from flask import Flask

從flask庫中導入Flask函數,from flask import abortfrom flask import redirect同理。

1.app = Flask(__name__)

創建Flask對象app,Flask類的構造函數只有一個必須指定的參數,即程序主模塊或包的名字。在大多數程序中,Python的__name__變量就是所需要的值。

2.@app.route(‘/‘)

客戶端(例如web瀏覽器)把請求發送給Web服務器,Web服務器再把請求發送給Flask程序實例。程序實例需要知道對每個URL請求運行哪些代碼,所以保存了一個URL到Python函數的映射關系。處理URL和函數之間的關系的程序稱為路由

在Flask程序中定義路由的最簡便方式,是使用程序實例提供的app.route修飾器,把修飾的函數註冊為路由。

修飾器是Python語言的標準特性,可以使用不同的方式修改函數的行為。慣常用法是使用修飾器把函數註冊為事件的處理程序。

3.def index():函數

index()函數放在@app.route(‘/‘)後面,所以就是把index()函數註冊為路由。

如果部署程序的服務器域名為www.example.com,在瀏覽器中訪問www.example.com後,會觸發服務器執行index()函數。

4.@app.route(‘/user/<name>‘)

@app.route(‘/‘)

,如果部署程序的服務器域名為www.example.com,在瀏覽器中訪問www.example.com/user/tom後,會觸發服務器執行下方修飾函數sayHello(name)

5.sayHello(name)函數

if name == ‘baidu‘:
        return redirect(‘http://www.baidu.com‘)
    elif name == ‘NO‘:
        return abort(404)

    return ‘<h1> Hello,%s </h1>‘ % name

假定部署程序的服務器域名為www.example.com

在瀏覽器中訪問www.example.com/user/baidu,那麽redirect()函數就直接鏈接到百度了。

註意的是,在使用redirect()函數之前,必須使用from flask import redirect從flask庫中導入redirect()函數。

在瀏覽器中訪問www.example.com/user/NO,那麽abort()函數就會觸發。

abort()函數用於處理錯誤,abort(404)返回404錯誤,abort()函數不會把控制權交還給調用它的函數,而是拋出異常把控制權交給Web服務器。

在瀏覽器中訪問www.example.com/user/tom,那麽會正確執行,在瀏覽器中顯示Hello,tom

6.if __name__ == ‘__main__‘:

一開始也沒弄懂,這句話是什麽意思。在StackOverflow中找到了答案。

大致翻一下:

當Python解釋器,讀py文件,它會執行它發現的所有代碼。在執行代碼之前,它會定義一些變量。例如,如果這個py文件就是主程序,它會設置__name__變量為"__main__"。如果這個py被引入到別的模塊,__name__會被設置為該模塊的名字。

舉個栗子:
創建一個test.py文件:

if __name__ == ‘__main__‘:
    print ‘自己主動執行‘
else:
    print ‘我被別的模塊引入‘

執行下$ python test.py會輸出自己主動執行
直接在命令行中輸入python隨後輸入import test,會輸出:我被別的模塊引入

7.app.run(debug=True)

程序實例用run方法啟動Flask繼承的開發Web服務器。

服務器啟動後,會進入輪詢,等待並處理請求。輪詢會一直進行,直到程序停止,比如按Ctrl-C鍵。

debug=True表示啟用調試模式。方便我們調試。



作者:iYiming
鏈接:http://www.jianshu.com/p/303057e51417
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。

初識python輕量web框架flask