django Rest框架AttributeError:从react访问时'function'对象没有属性'get_extra_actions'

问题描述 投票:0回答:1

我似乎收到以下错误,但似乎只有当我从 React 访问时才会出现。

2024-04-19 18:30:28   File "/app/config/urls.py", line 29, in <module>
2024-04-19 18:30:28     path('api/', include(router.urls)),
2024-04-19 18:30:28                            ^^^^^^^^^^^
2024-04-19 18:30:28   File "/usr/local/lib/python3.12/site-packages/rest_framework/routers.py", line 77, in urls
2024-04-19 18:30:28     self._urls = self.get_urls()
2024-04-19 18:30:28                  ^^^^^^^^^^^^^^^
2024-04-19 18:30:28   File "/usr/local/lib/python3.12/site-packages/rest_framework/routers.py", line 338, in get_urls
2024-04-19 18:30:28     urls = super().get_urls()
2024-04-19 18:30:28            ^^^^^^^^^^^^^^^^^^
2024-04-19 18:30:28   File "/usr/local/lib/python3.12/site-packages/rest_framework/routers.py", line 236, in get_urls
2024-04-19 18:30:28     routes = self.get_routes(viewset)
2024-04-19 18:30:28              ^^^^^^^^^^^^^^^^^^^^^^^^
2024-04-19 18:30:28   File "/usr/local/lib/python3.12/site-packages/rest_framework/routers.py", line 152, in get_routes
2024-04-19 18:30:28     extra_actions = viewset.get_extra_actions()
2024-04-19 18:30:28                     ^^^^^^^^^^^^^^^^^^^^^^^^^
2024-04-19 18:30:28 AttributeError: 'function' object has no attribute 'get_extra_actions'

urls.py:

router.register(r'hello', views.HelloViewSet, 'hello')

views.py:

@api_view(['GET'])
@permission_classes([AllowAny])
class HelloViewSet(viewsets.ModelViewSet):

    #dummy serializers and queryset for now
    serializer_class = SomeDummyDetailSerializer
    queryset = SomeDummyObject.objects.all()

    permission_classes = [DjangoObjectPermissions]
    def list(self, request): #get list
        return Response({'message': 'Hello, worlds!'})
    
    def retrieve(self, request, pk=None): #get detail
        return Response({'message': 'Hello, worlds!'})

我在这里遗漏了什么吗? 我看到的大多数错误似乎都是使用视图而不是带有路由器的视图集。我似乎还需要设置 @api_view 来覆盖 401 拒绝错误,但我认为这是令牌身份验证或其他问题的单独问题。

reactjs django django-rest-framework django-views django-viewsets
1个回答
0
投票

解决了它 - 必须删除@api_view并在类中进行

permission_classes = [AllowAny]
http_method_names = ['get'] 
© www.soinside.com 2019 - 2024. All rights reserved.