首页 > 解决方案 > 为restframework viewset action decorator添加一个新的装饰器

问题描述

我有一个 django 视图集,我在其中添加了一个带有动作装饰器的函数。我想为此功能添加一个自定义装饰器。

    @action(
        methods=["post"],
        detail=True,
        permission_classes=[],
        url_path="rename-book",
        url_name="rename-book",
    )
    def rename_book(self, request, pk=None):
        book_instance = self.get_object()
        book_instance.name = request.data['name']
        book_instance.save()
        return Response({"message":"Done"})

我想添加一个自定义装饰器来进行身份验证和检查用户匿名性。关于如何前进的任何想法?

标签: djangodjango-rest-frameworkdecorator

解决方案


而不是使用装饰器,您可以permission_classes像这样使用:

from rest_framework.permissions import IsAuthenticated

@action(
    methods=["post"],
    detail=True,
    permission_classes=[IsAuthenticated,],
    url_path="rename-book",
    url_name="rename-book",
)
def rename_book(self, request, pk=None):
    book_instance = self.get_object()
    book_instance.name = request.data['name']
    book_instance.save()
    return Response({"message":"Done"})

推荐阅读