Flask從入門到精通之flask擴展
Flask被設計成可擴展形式,因此並沒有提供一些重要的功能,比如數據庫和用戶認證,所以開發者可以自由選擇最適合程序的包,或者按需求自行開發。社區成員開發了大量不同用途的擴展,如果這還不能滿足需求,你還可使用所有Python 標準包或代碼庫。為了讓你知道如何把擴展整合到程序中,接下來我們將在hello.py 中添加一個擴展,使用命令行參數增強程序的功能。
使用Flask-Script支持命令行選項
Flask 的開發Web 服務器支持很多啟動設置選項,但只能在腳本中作為參數傳給app.run()函數。這種方式並不十分方便,傳遞設置選項的理想方式是使用命令行參數。
Flask-Script 是一個Flask 擴展,為Flask 程序添加了一個命令行解析器。Flask-Script 自帶了一組常用選項,而且還支持自定義命令
Flask-Script 擴展使用pip 安裝:
pip install flask_script
下面的例子顯示了把命令行解析功能添加到hello.py 程序中時需要修改的地方
from flask import Flask from flask.ext.script import Manager app = Flask(__name__) manager = Manager(app) @app.route(‘/‘) def index(): return ‘<h1>hello,flask</h1>‘ if __name__ == ‘__main__‘: manager.run()
專為Flask 開發的擴展都暴漏在flask.ext 命名空間下。Flask-Script 輸出了一個名為Manager 的類,可從flask.ext.script 中引入。這個擴展的初始化方法也適用於其他很多擴展:把程序實例作為參數傳給構造函數,初始化主類的實例。創建的對象可以在各個擴展中使用。在這裏,服務器由manager.run() 啟動,啟動後就能解析命令行了
運行python hello.py,會出現一下消息
usage: hello.py [-?] {shell,runserver} ... positional arguments: {shell,runserver} shell 在flask應用上下文中運行python shell runserver 運行flask開發服務器app.run() optional arguments: -?, --help 顯示幫助信息並退出
顧名思義,runserver 命令用來啟動Web 服務器。運行python hello.py runserver 將以調試模式啟動Web 服務器,但是我們還有很多選項可用:
usage: hello.py runserver [-?] [-h HOST] [-p PORT] [--threaded]
[--processes PROCESSES] [--passthrough-errors] [-d]
[-D] [-r] [-R] [--ssl-crt SSL_CRT]
[--ssl-key SSL_KEY]
Runs the Flask development server i.e. app.run()
optional arguments:
-?, --help show this help message and exit
-h HOST, --host HOST
-p PORT, --port PORT
--threaded
--processes PROCESSES
--passthrough-errors
-d, --debug enable the Werkzeug debugger (DO NOT use in production
code)
-D, --no-debug disable the Werkzeug debugger
-r, --reload monitor Python files for changes (not 100% safe for
production use)
-R, --no-reload do not monitor Python files for changes
--ssl-crt SSL_CRT Path to ssl certificate
--ssl-key SSL_KEY Path to ssl key
--host 參數是個很有用的選項,它告訴Web 服務器在哪個網絡接口上監聽來自客戶端的連接。默認情況下,Flask 開發Web 服務器監聽localhost 上的連接,所以只接受來自服務器所在計算機發起的連接
Flask從入門到精通之flask擴展