需求:
在具體的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)