我們按照官方文檔來,本篇文章只要介紹:
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 數據,比較直觀。