裝飾器_三(小案例)

實現flask中url和視圖函數之間的映射

-- coding: UTF-8 --

from functools import wraps

user = {‘is_login’: True}

class Flask:
def init(self):
self.url_virw_maps = {}

def route(self, url):
    def outter_wrapper(func):
        self.url_virw_maps[url] = func.__name__
        @wraps(func)
        def inner_wrapps(*args, **kwargs):
            func(*args, **kwargs)
        return inner_wrapps
    return outter_wrapper

def run(self):
    while True:
        url = input('請輸入網址')
        views_func = self.url_virw_maps.get(url)
        if views_func:
            exec(views_func + '()')
        else:
            print('404')

def login_required(func):
@wraps(func)
def wrapper(*args, **kwargs):
if user[‘is_login’] == True:
print(234)
func(*args, **kwargs)
print(123)
else:
print(‘請登錄’)
return wrapper

app = Flask()

從裏到外執行

@app.route(’/edit_user’)
@login_required
def edit_user(username=None):
print(‘修改用戶%s成功’ % username)

@app.route(’/’)
def index():
print(‘index page’)

app.run()

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