我想檢查一個正則表達式模式的某個參數值,只有它們匹配時才繼續。這發生在我的應用程序中的很多地方,所以我決定讓一個函數進行檢查並在需要時調用該函數。現在,在大多數情況下,我需要檢查是在一個視圖的一開始就進行的,所以我創造了它作爲一個裝飾,像這樣:與裝飾器和正常功能的條件相同嗎?
def validate(f):
def _inner(request, argument=None):
if argument is None:
return HttpResponse(content="No argument given", status=400)
elif not re.match('^SOME_REGEX$', argument):
return HttpResponse(content="Invalid argument", status=400)
else:
return f(request, argument)
return _inner
但也有,我需要調用檢查其他案件來自的函數,作爲嵌套條件的一部分。看起來我不能直接打電話,例如validate(argument)
。有什麼辦法可以使用相同的代碼作爲裝飾器以及正常的功能?或者我必須輸入兩次?
這很好用,謝謝!我不知道「如果可調用()」 - 這看起來像是一個非常實用的東西,我會研究。 – joschaf 2012-04-24 05:45:34