如何在 django modelviewset 中禁用 GET 方法的身份验证?

How can I disable authentication for GET method in django modelviewset?

我写了一个路由器 url 和 modelviewset 如下: **router.register(r'TestViewSet', views.TestViewSet)

**class TestViewSet(viewsets.ModelViewSet): queryset = Test.objects.all() serializer_class = TestSerializer 为此 class,我想禁用 GET 方法的身份验证。 请给出一些解决方案

好吧,要仅在 ModelViewSet 的 GET 方法上禁用身份验证,我们需要覆盖基于 HTTP 方法的权限 class。

为此,请尝试以下操作

from rest_framework import permissions

...

class TestViewSet(viewsets.ModelViewSet):

...

def get_permissions(self):
    """Returns the permission based on the type of action"""

    if self.action == "list":
        return [permissions.AllowAny()]

    return [permissions.IsAuthenticated()]

在上面的代码中,我们正在检查操作(假设您希望允许任何人查看列表,并限制可以执行其他操作的人actions)。

因此,如果操作是 list(HTTP 方法 GET),它将允许任何人访问,否则它将检查身份验证。

希望这能回答您的问题。