首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >django rest问题: get_extra_actions与listApiView

django rest问题: get_extra_actions与listApiView
EN

Stack Overflow用户
提问于 2020-05-10 08:55:33
回答 1查看 927关注 0票数 2

我正在使用Django REST API框架进行一个项目。当我在本地运行该项目时,我会得到以下错误:

代码语言:javascript
运行
复制
File "/home/asad/PycharmProjects/microshop/venv/lib/python3.8/site-packages/rest_framework/routers.py", line 153, in get_routes
    extra_actions = viewset.get_extra_actions()
AttributeError: type object 'CustomerListAPIViewSet' has no attribute 'get_extra_actions'

我在谷歌和StackOverflow上搜索,但没有找到任何解决方案。

serializers.py

代码语言:javascript
运行
复制
class CustomerSerializer(serializers.ModelSerializer):
    class Meta:
        model = Customer
        fields = ['name', 'phone_number', 'address', ]

views.py

代码语言:javascript
运行
复制
class CustomerListAPIViewSet(generics.ListAPIView):
    queryset = Customer.objects.all()
    serializer_class = CustomerSerializer

urls.py

代码语言:javascript
运行
复制
from django.urls import path, include
from accounts_app.views import CustomerListAPIViewSet
from rest_framework import routers

router = routers.DefaultRouter()

router.register(r'customer/', CustomerListAPIViewSet)

urlpatterns = router.urls
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-10 09:01:21

你的问题在于你的观点的命名。这会造成混乱。

您实际上正在创建一个APIView子类。但您将其命名为ViewSet。您可以在ViewSet路由器而不是APIView路由器上注册APIView类。

您可以执行以下更改,以使视图可运行。

视图文件:

代码语言:javascript
运行
复制
class CustomerListAPIView(generics.ListAPIView):
    queryset = Customer.objects.all()
    serializer_class = CustomerSerializer

URLS文件:

代码语言:javascript
运行
复制
from django.urls import path, include
from accounts_app.views import CustomerListAPIView

urlpatterns = [
    path(r'^customer/', CustomerListAPIView.as_view(), name='customer-list')
]

相反,定义一个实际的ViewSet类,但是结构会有所不同。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61709402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档