flask學習筆記代碼篇-03

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)

 

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