Flask - 動態路由和debug模式

一、前言

  參考https://www.cnblogs.com/poloyy/p/14994738.html

  • 前面幾篇文章講的路由路徑都是固定的,就是一個路徑和一個視圖函數綁定,當訪問這條路徑時會觸發相應的處理函數
  • 這樣無法處理複雜的情況,比如常見的一個課程分類下有很多個課程,那麼他們的 path 可能是 /course/class_1,/course/class_2,/course/class_3...僅最後的序號不同,其他部分都是相同的,如果每一條 path 都寫一個單獨的視圖函數來處理,那複用性會很差,代碼量也會很多
  • 所以咱們要使用動態路由,路由中的路徑是一個包含有參數的模板,這樣就可以匹配多條路徑

二、靜態路由

  靜態路由的例子,靜態路由存在的問題:三個視圖函數的功能邏輯是相同的,存在明顯的邏輯代碼重複

from flask import Flask

app = Flask(__name__)


@app.route('/user/tom')
def show_user_tom():
    return 'My name is tom'


@app.route('/user/jerry')
def show_user_jerry():
    return 'My name is jerry'


@app.route('/user/mike')
def show_user_mike():
    return 'My name is mike'


if __name__ == '__main__':
    app.run()

三、動態路由

1、動態路由說明

Flask 中動態路由是指帶有參數的頁面路徑,大概格式如下:/prefix/<參數> ,它是一個模板,可以匹配多條路徑,將參數放置在符號 < > 之間

2、將上面靜態路由優化成動態路由

from flask import Flask,request

app = Flask(__name__)

@app.route('/user/<name>')
def show_user(name):
    # Python 中的'%s'%用法:一種字符串格式化的語法, 基本用法是將值插入到%s佔位符的字符串中
    # %s,表示格式化一個對象爲字符,%(取代s的字符串)
    return '我的名字是:%s' % name

if __name__ == '__main__':
    app.run()
  • 匹配所有以 /user/ 開頭的路徑
  • 視圖函數 show_user 有一個參數 name
  • 假設實際的路徑是 /user/張三,那麼會與 /user/<name> 匹配成功,並且將張三 存儲到參數 name 中

3、轉換器

在 Flask 中,動態路由的參數類型默認是 string,但是也可以指定其他類型,比如數字 int 等

以下代碼定義了四條動態路由:

from flask import Flask

app = Flask(__name__)

@app.route('/user/<name>')
def show_user(name):
    return 'My name is %s' % name


@app.route('/age/<int:age>')
def show_age(age):
    return 'age is %d' % age


@app.route('/price/<float:price>')
def show_price(price):
    return 'price is %f' % price


@app.route('/path/<path:name>')
def show_path(name):
    return 'path is %s' % name


if __name__ == '__main__':
    app.run()

/age/<int:age> postman 發起請求的結果

 

 注:一個動態路由可以包含多個參數

@app.route('/all/<path:path>/name/<string:name>/age/<int:age>/price/<float:price>')
def show_all(name, path, age, price):
    return f"path is {path}\nname is {name}\nage is {age}\nprice is {price}"

四、Flask 的 Debug 模式

1、Flask 程序可以運行在 Debug 模式下,Debug 模式提供瞭如下功能:

1)當 Flask 程序出現錯誤時,在瀏覽器中提示錯誤的詳細信息

2)修改 Flask 程序代碼後,Flask 程序會自動重新加載,不需要重啓 Flask 程序,即可在瀏覽器中看到修改後的效果

2、開啓debug模式:加個 debug = True 就好啦

 3、debug 模式開啓後的控制檯輸出:Debug mode: on,表示 Flask 程序已經進入了調試模式

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