Flask路由變量中實現自定義正則轉換器

需求:
在具體的web開發實現的過程中,可能會有一些其他的匹配規則,例如對數據的長度進行限制、某個號段的限制、單詞的限制。此時,自帶的converter就不能滿足我們的要求了,需要我們定製屬於我們自己的轉換器。

步驟:
1.自定義類,繼承(BaseConverter)alt+回車導入一下,並且設置過濾規則(設置regex屬性)
2.將自定義轉換器添加到應用中

一個簡單的demo效果:
在這裏插入圖片描述
完整代碼如下:

from flask import Flask
from werkzeug.routing import BaseConverter

app = Flask(__name__)


# -實現自定義轉換器
# 1.自定義類,繼承(BaseConverter)alt+回車導入一下,並且設置過濾規則(設置regex屬性)
# 2.將自定義轉換器添加到應用中
class CustemConverter(BaseConverter):
    # 設置自定義正則轉換器過濾規則
    regex = r"[1-9]\d{5}(?!\d)"  # 在此寫了一個郵政編碼的過濾規則,在此可以隨意寫一個你所需要的正則表達式


# 將自定義轉換器添加到應用中
app.url_map.converters["re"] = CustemConverter


# 將正則轉換器定義到路由變量中
@app.route('/<re:adressid>')
def index(adressid):
    if adressid == "450000":
        return "鄭州郵政編碼:%s" % adressid
    else:
        return "郵政編碼:%s" % adressid


if __name__ == '__main__':
    app.run(host="0.0.0.0", port=5000, debug=True)

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