02_01_建立最簡單的web程序

初始化

全部的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只有一個靜態路由。 並且沒有啓動服務器的代碼, 咱們要手動修改加上, 而後:

相關文章
相關標籤/搜索