在django视图中定义装饰器的正确顺序是什么?



我想为我的django函数视图设置多个装饰器。问题是我想不出装修师的顺序该如何安排。

例如,这是我的视图:

@permission_classes([IsAuthenticated])
@api_view(["POST"])
def logout(request):
pass

在这种情况下,第一个装饰器永远不会应用!既不是当请求是POST也不是当它是GET!

当我改变顺序时,变成这样:

@api_view(["POST"])
@permission_classes([IsAuthenticated])
def logout(request):
pass

最后一个装饰器在第一个装饰器之前应用,这不是我想要的顺序。

我希望首先应用装饰器@api_view(["POST"]),然后是@permission_classes([IsAuthenticated])

我该怎么做呢?

这是对'api_view'进行排序的正确方法,将该视图视为由restframework定义的装饰器的API视图。

from rest_framework.decorators import api_view, permission_classes
@api_view(["POST"])
@permission_classes([IsAuthenticated])
def logout(request):
pass

最新更新