实现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()