初識python輕量web框架flask
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 abort
和from 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