全部的Flask程序都必須建立一個程序實例, 這個程序實例就是Flask類的對象。客戶端把請求發送給Web服務器, 服務器再把請求發送給Flask程序實例, 而後由程序實例處理請求。git
from flask import Flask app = Flask(__name__)
注意: 此處的__name__是一個全局變量, 它的值是代碼所處的模塊或包的名字, Flask用這個參數決定程序的根目錄, 以便稍後能找到相對於程序根目錄的資源文件位置。
仍是上面那句話——客戶端把請求發送給Web服務器, 服務器再把請求發送給Flask程序實例, 而後由程序實例處理請求。flask
那麼程序實例如何處理請求, 答案是程序實例經過路由來處理請求——路由就是URL和處理請求的函數的映射——處理請求的函數就叫作視圖函數。瀏覽器
Flask定義路由最簡便的方式, 是使用程序實例提供的app.route修飾器:服務器
@app.route('/'): def index(): return '<h1>Hello world!<h1>'
前例把index()函數註冊爲程序根地址的處理程序。 ( 若是部署程序的服務器域名爲www.example.com, 在瀏覽器中訪問http://www.example.com後, 會觸發服務器執行index()函數。 )app
這個函數的返回值稱爲響應, 是客戶端接收到的內容。函數
地址中包含可變部分的路由:url
@app.route('/user/<name>')debug
def user(name):調試
return '<h1>Hello, %s!</h1>' %namecode
尖括號中的內容就是動態部分,任何能匹配靜態部分的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只有一個靜態路由。 並且沒有啓動服務器的代碼, 咱們要手動修改加上, 而後: