標籤:http io os 使用 ar java strong sp art
本節取自part I chapter 2的後半部分,跳過了關於request與response具體互動設計細節內容。主要通過Flask-Script外掛程式讓讀者對於外掛程式系統有個簡單認識。
Flask注重拓展性,社區裡已經有很多外掛程式可供選擇,當然也可以使用python標準庫或者其他的各種庫。
Flask-Script
Flask-Script這個外掛程式,是用來增加Flask應用的命令列參數的,它本身內建了一些通用的選項,也支援自訂的命令。這功能可能類似於python標準庫中的argparse。
之前提到過,Flask內建一個開發環境用的server,這個server支援一些啟動參數配置,但是這些配置只能通過在啟動時作為app.run()參數傳入。這非常不方便,比較理想的配置方式是通過指令碼命令行參數的方式傳入。下面通過Flask-Script來實現這個功能。
安裝很簡單:
$ pip install flask-script
下面給之前寫的hello.py指令碼增加一些命令列參數,省略了一些代碼:
from flask.ext.script import Managermanager = Manager(app)# ...if __name__ == ‘__main__‘: manager.run()
Flask的外掛程式在安裝好後,都可以通過flask.ext這個命名空間引入。Flask-Script可以提供一個Manager類,通過flask.ext.script可以引入。
通過向構造器傳入應用執行個體來初始化外掛程式裡的執行個體,比如上面的Manager,這是Flask外掛程式的常用初始化方式。從構造器得到的執行個體,就可以視情況不同正常使用了。現在應用通過manager.run()啟動,命令列參數在此處解析。
註:目前代碼是GitHub上的2c版本,切換tag可以查看。
運行hello.py,可以發現現在應用多了一些基本的命令列參數:
$ python hello.pyusage: hello.py [-h] {shell,runserver}...positional arguments: {shell,runserver} shell Runs a Python shell inside Flask application context. runserver Runs the Flask development server i.e. app.run()optional arguments: -h, --help show this help message and exit
shell命令可以在應用上下文中開啟一個Python的shell,你可以在裡面處理一些維護任務或測試。
runserver命令可以啟動server,預設開始debug模式,還有很多參數可選:
$ python hello.py runserver --helpusage: hello.py runserver [-h] [-t HOST] [-p PORT] [--threaded] [--processes PROCESSES] [--passthrough-errors] [-d] [-r]Runs the Flask development server i.e. app.run()optional arguments:-h, --help show this help message and exit-t HOST, --host HOST-p PORT, --port PORT--threaded--processes PROCESSES--passthrough-errors-d, --no-debug-r, --no-reload
--host參數可以指定server監聽的串連,預設監聽的localhost(一般是127.0.0.1)。嘗試修改:
$ python hello.py runserver --host 0.0.0.0* Running on http://0.0.0.0:5000/* Restarting with reloader
現在處於同網路中的任何電腦都可以通過訪問http://a.b.c.d:5000來訪問這個server,a.b.c.d是運行server的電腦在這個網路中的IP。
註:下次是模板機制的說明,重點!Flask返回的response全靠這個機制。
Flask Web Development - Flask外掛程式機制&Flask-Script