[解决]
class articleViewSet(viewsets.ModelViewSet):
queryset = article.objects.all()
serializer_class = articleSerializer
def list(self, request):
queryset = self.get_queryset()
serializer = articleSerializer(queryset, many=True)
return Response(serializer.data)
我使用DRF创建了API服务器。
为了自定义列表请求,我写了这样的views.py。
[views.py]
class articleViewSet(viewsets.ModelViewSet):
def list(self, request):
queryset = article.objects.all()
serializer = articleSerializer(queryset, many=True)
return Response(serializer.data)
但是,当我执行runserver时,它会抛出错误。
AssertionError:base_name
参数未指定,并且无法自动确定视图集中的名称,因为它没有.queryset
属性。
错误发生在哪里?
答案 0 :(得分:0)
views.py
class articleViewSet(viewsets.ModelViewSet):
queryset = article.objects.all()
serializer_class = articleSerializer
urls.py:
router = Router()
router.register(r'article', views.articleViewSet)
urlpatterns = [
path('', include(router.urls)), # for django2.0.x
url(r'^', include(router.urls)) # for django1.x
path('admin/', admin.site.urls),
]
总而言之,如果您想要获取列表中的所有文章,则不需要覆盖列表方法,ModelViewSet
将自动为您完成。
答案 1 :(得分:0)
[解决]
class articleViewSet(viewsets.ModelViewSet):
queryset = article.objects.all()
serializer_class = articleSerializer
def list(self, request):
queryset = self.get_queryset()
serializer = articleSerializer(queryset, many=True)
return Response(serializer.data)