2012-11-19 53 views
1

有人可以向我解釋這兩個代碼塊之間的區別。第一個工作,而後者拋出我在標題中指出的錯誤。燒瓶python斷言錯誤:未實現方法'GET'

def login_required(method): 
@functools.wraps(method) 
def wrapper(*args, **kwargs): 
    if 'username' in flask.session: 
     return method(*args, **kwargs) 
    else: 
     flask.flash("A login is required to see the page!") 
     return flask.redirect(flask.url_for('index')) 
return wrapper 

def login_required(method): 
@functools.wraps(method) 
def wrapper(*args,**kwargs): 
    if "username" in flask.session: 
     return method(*args,**kwargs) 
    else: 
     flask.flash("A login is required to see the page!") 
     return flask.redirect(flask.url_for('index')) 
    return wrapper 
+4

我認爲你在兩個版本上都有縮進錯誤,請參閱fuctools [doc](http://docs.python.org/2/library/functools.html) – Raber

回答

2

在第一個代碼示例,您正確地在login_required函數的最後返回wrapper功能。

在第二個代碼示例中,您已獲得return wrapper裏面的wrapper函數本身。只要刪除最後一行,你應該全部設置。