djangorestframeworkで呼び出されるデコレータ、認証クラス、ディスパッチの順序については非常に混乱しています。私のジャンゴフレームワークの知識とは少し違っているようです。django restフレームワーク:デコレータ、認証クラス、ディスパッチの順番は
一部コード:
#operation_logger: customized decorator
class FileView(APIView):
parser_classes = (MultiPartParser,)#A
authentication_classes = (BasicAuthentication,)#B
@permission_classes((IsAuthenticated,))#C
@method_decorator(csrf_exempt)#D
@method_decorator(operation_logger)#E
def dispatch(self, request, *args, **kwargs):#F
return super(FileView, self).dispatch(request, *args, **kwargs)
@method_decorator(operation_logger)#G
def post(self, request):#H
print "xxxxpost"
要求を処理するときに呼び出される(A)、B、C、D、E、F、G、Hの順序は何ですか? BはFの後、GとHの前に呼び出されているようですか?
ところで、私のプロジェクトは、最初は伝統的なジャンゴプロジェクトでした。私は要求がすべてのミドルウェアを通過する必要があることを知っています。今、DRFによるAPIをホストする新しいアプリを追加しました。 私のAPIへのリクエストがすべてのミドルウェアを通過するかどうかはわかりませんか?
おかげ
あなたは、インポート中に関数が呼び出される順序を意味しますか? –
@RégisB。リクエストを処理するときの順序を意味します。私はすでに私のポストを更新しました。ありがとう – BAE
したがって、dispatch()では、ディスパッチがインタプリタによって作成され、次にデコレータ@method_decoratorが適用され、このデコレータは次のデコレータが同じことをした後にコール可能(すべてのデコレータと同様)を返します。結果はdispatch()に割り当てられます –