02_01_建立最簡單的web程式
初始化
所有的Flask程式都必須建立一個程式例項, 這個程式例項就是Flask類的物件。客戶端把請求傳送給Web伺服器, 伺服器再把請求傳送給Flask程式例項, 然後由程式例項處理請求。
- 建立程式例項:
from flask import Flask
app = Flask(__name__)
注意: 此處的__name__是一個全域性變數, 它的值是程式碼所處的模組或包的名字, Flask用這個引數決定程式的根目錄, 以便稍後能找到相對於程式根目錄的資原始檔位置。
路由和檢視函式
還是上面那句話——客戶端把請求傳送給Web伺服器, 伺服器再把請求傳送給Flask程式例項, 然後由程式例項處理請求。
那麼程式例項如何處理請求, 答案是程式例項通過路由來處理請求——路由就是URL和處理請求的函式的對映——處理請求的函式就叫做檢視函式。
Flask定義路由最簡便的方式, 是使用程式例項提供的app.route修飾器:
@app.route('/'):
def index():
return '<h1>Hello world!<h1>'
前例把index()函式註冊為程式根地址的處理程式。 ( 如果部署程式的伺服器域名為www.example.com, 在瀏覽器中訪問http://www.example.com後, 會觸發伺服器執行index()函式。 )
這個函式的返回值稱為響應, 是客戶端接收到的內容。
地址中包含可變部分的路由:
@app.route('/user/<name>')
def user(name):
return '<h1>Hello, %s!</h1>' %name
尖括號中的內容就是動態部分,任何能匹配靜態部分的URL都會對映到這個檢視函式, 呼叫檢視函式時, Flask會將動態部分作為引數傳入函式。
注意:路由中的動態部分預設型別是字串, 不過也可以使用別的型別如:/user/<int: id>只會匹配動態片段id為整數的url。除了整型, Flask還支援float, path型別, 其中path型別也是字串, 不過其中的/不會被當做分隔符, 而是動態片段的一部分。
3.啟動伺服器
程式例項用run方法啟動Flask整合的開發Web伺服器:
if name == '__main__': (只有直接執行該模組時條件才為真, 該模組被匯入條件為假)
app.run(debug=True) #debug引數為True, 表示啟用除錯模式。
伺服器啟動後會進入輪詢, 等待並處理請求, 直到程式停止, 比如按Ctrl+C
4.一個完整的程式
from flask import Flask
app = Flask(__name__)
靜態路由
@app.route('/')
def index():
return '<h1>hello, world!<h1>'
動態路由
@app.route('/user/<name>')
def index(name):
return '<h1>hello, {}<h1>'.format(name)
if name == '__main__':
#伺服器輪詢
app.run(debug=True)
————————————————————————實踐—————————————————————————
5.實踐操作
一.準備
按上節所說,
&cd flasky 進入flasky資料夾
&source venv/bin/activate 啟用虛擬環境
遷出新版本,
&git checkout 2a 此命令遷出的是隻含有靜態路由的程式, 效果圖如下:
注意此時遷出的版本hello.py只有一個靜態路由。 而且沒有啟動伺服器的程式碼, 我們要手動修改加上, 然後: