如何在 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),它将允许任何人访问,否则它将检查身份验证。
希望这能回答您的问题。
我写了一个路由器 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),它将允许任何人访问,否则它将检查身份验证。
希望这能回答您的问题。