【问题标题】:Error while initializing rest framework urls初始化休息框架网址时出错
【发布时间】:2016-09-10 13:08:07
【问题描述】:

我现在正在重构我的 REST API。使用router 而不是直接网址后,我无法启动我的项目。我哪里错了?

错误:

TypeError: as_view() takes exactly 1 argument (3 given)

models.py:

class Device(models.Model):
    ...

class Measure(models.Model):
    device = models.ForeignKey(Device)
    ...

class PeriodAverage(models.Model):
    measure = models.ForeignKey(Measure) 

urls.py:

router = routers.DefaultRouter()
router.register(r'devices', views.DevicesList)
router.register(r'devices/{pk}/measures', views.MeasuresList, 'Measure')
router.register(r'measures/{pk}/averages', views.PeriodAveragesList, 'Average')

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^api/v1/', include(router.urls)),
]

views.py:

class DevicesList(viewsets.ModelViewSet):
    queryset = Device.objects.all()
    serializer_class = serializers.DeviceSerializer


class MeasuresList(viewsets.ModelViewSet):
    serializer_class = serializers.MeasureSerializer

    def get_queryset(self):
        ...


class PeriodAveragesList(ListAPIView):
    serializer_class = serializers.PeriodAverageSerializer

    def get_queryset(self):
        ...

【问题讨论】:

    标签: python django django-rest-framework


    【解决方案1】:

    路由器使用ViewSets。您的PeriodAveragesList 扩展了ListAPIView,这是一个基于类的视图,而不是ViewSet

    如果您仍想为该视图使用路由器,请参阅this answer 了解解决方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-06
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-16
      • 2016-09-25
      • 1970-01-01
      相关资源
      最近更新 更多