flask03
本章內容主要包含:自定義轉換器、捕獲0做分母的異常
from flask import Flask, abort
from werkzeug.routing import BaseConverter
app = Flask(__name__)
# 自己定義一個轉換器,繼承與系統的BaseConverter
class rc(BaseConverter):
# regex = '[a-z][0-9]{4}'
def __init__(self, url_map, *args):
super(rc, self).__init__(url_map) # 調用父類
self.regex = args[0] #記錄傳入參數(正則)
def to_python(self, values):
# split方法就是去掉加號並返回list類型數據
tmp = values.split('+')
print('tmp: %s' % tmp)
return 'tmp: %s' % tmp
# 把自定義的轉換器添加到系統的轉換器列表,並且指定轉換器在使用的時候名字爲aa
# url_map 視圖函數和路由的映射關係的列表
app.url_map.converters['re'] = rc
@app.route('/')
def index():
# a= 0
# b = 10
# c = b/a # 除法錯誤的準備
# abort(404) # 主動強制拋出一個404錯誤
return 'index'
@app.route('/user/<re("[a-z][0-9]{4}"):user_id>')
def demo1(user_id):
return 'user_id %s' % user_id
@app.route('/card/<re("[a-z]{2}[0-9]{4}"):user_id>')
def demo2(user_id):
return 'user_id %s' % user_id
# --------------以上是轉換器部分------------------
# 捕獲404錯誤,並返回一個友好提示(Register a function to handle errors by code or exception class)
@app.errorhandler(404)
def page_error(error):
return '404-頁面失蹤了'
@app.errorhandler(ZeroDivisionError)
def zero_error(error):
return '除法錯誤'
if __name__ == '__main__':
app.run(debug=True)