ある引数値を正規表現パターンと照合し、一致する場合にのみ続行します。これは私のアプリケーション内の多くの場所で発生するので、私は機能をチェックし、私が必要なときにその機能を呼び出させることにしました。今、ほとんどの場合、私はそのチェックは右のビューの最初に実行する必要があるので、私はそうのようなデコレータとして、それを作成しました:デコレータと同じ状態で、通常の機能と同じですか?
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
しかし、私はそれチェッカーを呼び出す必要があり、他の例があります内には、ネストされた条件の一部としての関数があります。私はそれを直接呼び出すことはできないようです。 。デコレータと同じコードを通常の関数と同じように使用できる方法はありますか?それとも、2回入力する必要がありますか?
def validate(argument):
return re.match('^SOME_REGEX$', argument)
し、必要に応じてvalidate
関数を呼び出しデコレータを書く:
これは美しく動作します、ありがとう!私は 'callable()'について知らなかった - それは私が調べる非常に実用的なもののように思える。 – joschaf