1
我试图在烧瓶中实现一个最小化的登录系统,所以我定义了一个装饰器来检查会话中的某个元素是否具有特定的值,如果是,用户可以'访问该装饰器包装的页面。在烧瓶中定义视图函数的装饰器
这是包装的视图功能:
@mustBelongToARoom
@app.route('/draw')
def draw():
return render_template('draw.html')
这是装饰
def mustBelongToARoom(f):
@wraps(f)
def wrap_f(*args, **kwargs):
print 'test\n'
if session['room_name'] is None:
return render_template(url_for('/'))
return f(*args, **kwargs)
return wrap_f
所以,基本上,如果room_name
是None
用户无法访问draw
页面。 问题是,它似乎忽略了由装饰者添加的代码。例如,拿这个版本的mustBelongToARoom
装饰的:
def mustBelongToARoom(f):
@wraps
def wrap_f(*args, **kwargs):
print 'test\n'
if session['room_name'] is None:
print '[DEBUG] you are not allowed to acces this page!\n'
return render_template(url_for('/'))
return f(*args, **kwargs)
return wrap_f
我希望看到[DEBUG] you are not allowed to acces this page!\n
在控制台当用户试图存取权限的draw
页,但它并没有显示出来。