1. 程式人生 > >02_01_建立最簡單的web程式

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只有一個靜態路由。 而且沒有啟動伺服器的程式碼, 我們要手動修改加上, 然後: