python-web框架Flask-(二)使用Flask

我們按照官方文檔來,本篇文章只要介紹:

1、引入Flask實例

2、debug模式

3、路由、路由中的變量規則

4、url_for()反轉函數

 

1、引入flask實例

from flask import Flask # 引入flask
app = Flask(__name__) # 創建flask實例

#下邊裝飾器作用是:使用route()裝飾器告訴flask觸發函數的url,
#也就是當用戶輸入http://localhost:5000時,下邊函數會執行
@app.route('/')
def hello_world():
    return 'Hello, World!'
if __name__ == '__main__': # 判斷是否是主模塊,之前文章有講過
    app.run() # 運行app.run()會一直監聽指定的端口, 對收到的request運行app生成response並返回

在瀏覽器中打開 http://127.0.0.1:5000/ ,就可以看到 Hello World! 字樣。

 

2、調式模式

打開調試模式,每次修改程序中的代碼,都不需要手動重啓服務器,它會自動重啓,並且程序出錯時,會在頁面顯示報錯信息,可以具體到哪一行。。。

開啓調試模式有兩種方法:

(1) app.run(debug=True)

from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
    return 'Hello, World!'
if __name__ == '__main__':
    app.run( debug=True )

   (2)   新建一個配置文件 config.py,在裏邊定義:DEBUG = True ,在主模塊中,引入配置文件:

# config.py
DEBUG = True
from flask import Flask
import config # 引入配置文件 config
app = Flask(__name__) 
app.config.from_object(config) # 具體爲什麼這樣配置,不太清楚,以後在研究下
@app.route('/')
def hello_world():
    return 'Hello, World!'
if __name__ == '__main__':
    app.run()

 

3、路由

使用route( ) 路由裝飾器把url和視圖函數作一個映射,也就是說當用戶輸入一個請求網址時,flask要執行哪一個視圖函數:

@app.route('/') # 請求http://localhost:5000 執行下邊視圖函數
def fn():
    return 'lxc'
@app.route('/active') # 請求http://localhost:5000 執行下邊視圖函數
def fn():
    return 'active'

  (2)動態參數:

給路由添加動態參數,如下:

# 請求http://localhost:5000/動態id   會執行下邊視圖函數
@app.route('/active<activeid>') 
def fn(activeid):
    print(type(activeid)) # <class 'str'> 此參數是字符串需要轉化
    return 'activeid是:%d' % int(activeid) 

上邊代碼,參數是字符串類型的數字,需要轉化爲數字,但flask參數可以設置規則:

變量規則:

flask中動態路由參數可有以下幾種規則:

——  string:接收任何不包含斜線的文本(限制參數類型的)

——  int:接受正整數(限制參數類型的)

——  float:接受正浮點數(限制參數類型的)

——  path:類似於string,但可以包含斜線(會將斜線認爲是一個字符)

# 數字類型的參數
@app.route('/active/<int:activeid>')
def fn(activeid):
    return 'activeid是:%d' % activeid

# 字符串類型的參數
@app.route('/active/<string:activeid>')
def fn(activeid):
    return 'activeid是:%d' % activeid

··· ···

 

4、反轉函數 url_for( )

flask官網:url_for( )函數用於構建執行函數的URL,它把函數名稱作爲第一個參數;通俗來講,url_for()函數可以輸出指定函數對應的url,(指定函數寫在括號中)舉個例子: 

from flask import Flask,url_for # 引入url_for函數
app = Flask(__name__)

@app.route('/')
def fn1():
    print(url_for('fn')) #/active  輸出指定函數對應的url
    return 'lxc'

@app.route('/active')
def fn():
    return 'activeid'

 上邊代碼,

1、首先要引入url_for( ) 反轉函數

2、 url_for(  ) 反轉函數參數必須是字符串類型的(初學者很容易出錯的地方!!!!!!!!!!!!!!!!)

作用:

url_for( ) 經常用在重定向上邊:

from flask import Flask,url_for,redirect
app = Flask(__name__)

@app.route('/')
def fn1():
    return redirect(url_for('fn'))
@app.route('/active')
def fn():
    return '這是重定向頁面'

上邊代碼,使用重定向需要引入 redirect模塊,當用戶訪問根路徑(http://localhost:5000)時,會自動跳轉到 http://localhost:5000/active 頁面;

使用url_for()反轉函數有幾個優點:

1、當重定向路徑修改時,不需要修改redirect( ) 中的代碼。

2、url_for( )  創建會爲你處理特殊字符的轉義和 Unicode 數據,比較直觀。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章