一個簡單的flask應用
一個簡單的flask應用,文件名hello.py
from flask import Flask app = Flask(__name__) @app.route(‘/‘) def hello_world(): return ‘Hello World!‘ if __name__ == ‘__main__‘: app.run()
1.引入Flask類,Flask類實現了一個WSGI應用;
2.app是Flask的實例,它接收包或者模塊的名字作為參數,但一般都是傳遞__name__;
3.app.route裝飾器會將URL和執行視圖函數的關系保存到app.url_map屬性上;
4.內置變量__name__判斷表示import該模塊不會執行(__name__執行該程序時候為__main__,import時候為模塊文件名),
執行app.run就可以啟動服務了,默認Flask只監聽虛擬機的本地127.0.0.1這個地址,端口為5000。
ps:1.調試模式
雖然 run() 方法適用於啟動本地的開發服務器。如果你啟用了調試支持,服務器會在代碼修改後自動重新載入,並在發生錯誤時提供一個相當有用的調試器。有兩種途徑來啟用調試模式。
一種是直接在應用對象上設置:
app.debug = True
app.run()
另一種是作為 run 方法的一個參數傳入:
app.run(debug=True)
2.路由
route()裝飾器把一個視圖函數綁定到一個URL上,也可以構造動態的URL或者一個路由上面綁定多個URL。
2.1.變量規則
在給URL綁定動態變量時,動態的字段以<variable_name>,這部分作為命名參數部分傳遞到函數。規則可以用 <converter:variable_name>
app.route(‘app/<username>‘) def show_user_info(username): return "User %s" % username #User對象 app.route(‘app/<int:userid>‘): return "User %s" % userid
轉換器有下面幾種:
int 接受整數
float 同int,但是接受浮點數
path和默認的相似,但是接受斜線
2.2.唯一 URL / 重定向行為
Flask 的 URL 規則基於 Werkzeug 的路由模塊。這個模塊背後的思想是基於 Apache 以及更早的 HTTP 服務器主張的先例,保證優雅且唯一的 URL。
2.3 構造 URL
url_for() 來給指定的函數構造 URL。它接受函數名作為第一個參數,也接受對應 URL 規則的變量部分的命名參數。未知變量部分會添加到 URL 末尾作為查詢參數。
2.4http方法
app.route("app/index",methods=[‘GET‘,‘POST‘]) def login(): if request.method==‘POST‘: login() else: show_login_error()
默認情況下,路由只回應 GET 請求,但是通過 route() 裝飾器傳遞 methods 參數可以改變這個行為。GET:瀏覽器告知服務器:只 獲取 頁面上的信息並發給我。這是最常用的方法。POST:瀏覽器告訴服務器:想在 URL 上 發布 新信息。並且,服務器必須確保 數據已存儲且僅存儲一次。這是 HTML 表單通常發送數據到服務器的方法。
一個簡單的flask應用