1
我寫了一個裝飾,看起來像這樣無爭議裝飾裝修工?
def login_required_message(*args, **kwargs):
kwargs.setdefault('message', "You must be logged in to do that.")
return _user_passes_test_message(lambda u: u.is_authenticated(), *args, **kwargs)
但是當我嘗試在最後使用它沒有()
,它失敗了,除非我把它改寫這樣的:
def login_required_message(function=None, *args, **kwargs):
kwargs.setdefault('message', "You must be logged in to do that.")
decorator = _user_passes_test_message(lambda u: u.is_authenticated(), *args, **kwargs)
if function: return decorator(function)
else: return decorator
然後()
是可選的。那麼,如何將這個「可選」功能封裝到裝飾器中,以便我可以裝飾我的裝飾器以允許沒有參數?
非常好!這就是我正在尋找的!非常感謝! – ramusus 2010-11-01 14:39:31