2014-07-03 30 views
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_nameNone用户无法访问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页,但它并没有显示出来。

回答