flask被設計成可擴充套件形式,因此並沒有提供一些重要的功能,比如資料庫和使用者認證,所以開發者可以自由選擇最適合程式的包,或者按需求自行開發。社群成員開發了大量不同用途的擴充套件,如果這還不能滿足需求,你還可使用所有python 標準包或**庫。為了讓你知道如何把擴充套件整合到程式中,接下來我們將在hello.py 中新增乙個擴充套件,使用命令列引數增強程式的功能。
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
def index():
return ''
if __name__ == '__main__':
manager.run()
專為flask 開發的擴充套件都暴漏在flask.ext 命名空間下。flask-script 輸出了乙個名為manager 的類,可從flask.ext.script 中引入。這個擴充套件的初始化方法也適用於其他很多擴充套件:把程式例項作為引數傳給建構函式,初始化主類的例項。建立的物件可以在各個擴充套件中使用。在這裡,伺服器由manager.run() 啟動,啟動後就能解析命令列了
執行python hello.py,會出現一下訊息
usage: hello.py [-?] ...
positional arguments:
shell 在flask應用上下文中執行python shell
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]
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安裝
安裝flask最簡單的方式是使用虛擬環境,虛擬環境是python直譯器的乙個私有副本,在這個環境中你可以安裝私有包,而且不會影響系統中安裝的全域性的python直譯器。虛擬環境非常有用,可以在系統的python 直譯器中避免包的混亂和版本的衝突。為每個程式單獨建立虛擬環境可以保證程式只能訪問虛擬環境...
Flask從入門到精通之flask程式入門
所有flask程式都必須建立乙個程式例項,web伺服器使用一種名為web伺服器閘道器介面的的協議 wsgi 把接收自客戶端的所有請求 給這個物件處理。程式例項是flask類的物件,使用下面 構建 from flask import flaskflask類的建構函式只有乙個必須指定的引數,即程式主模組...
Flask從入門到精通之鏈結的使用
在web開發中,任何具有多個路由的程式都需要可以連線不同頁面的鏈結,例如導航條。在模板中直接編寫簡單路由的url 鏈結不難,但對於包含可變部分的動態路由,在模板中構建正確的url 就很困難。而且,直接編寫url 會對 中定義的路由產生不必要的依賴關係。如果重新定義路由,模板中的鏈結可能會失效。為了避...