首页 > 解决方案 > Django REST Framework Viewset 返回 404(GET 请求)

问题描述

我正在寻求了解 ViewSet 在 Django REST 框架的上下文中与路由器一起使用时如何补充 URL 路由。当我在 请求收集时api/v2/people/,会返回 404 响应。我不清楚视图在浏览器中呈现并获得 200 状态代码作为响应的一部分还需要什么?

网址.py

from django.urls import path, include

from rest_framework import routers

from people import views

router = routers.SimpleRouter()
router.register(r'people', views.PersonViewSet, basename="people")

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api-path/', include('rest_framework.urls')),
    path('api/v2/people/', include(router.urls), name="people")
]

人/views.py


from rest_framework.viewsets import ViewSet

from .models import Person
from .serializers import PersonSerializer


class PersonViewSet(ViewSet):

    def list(self, request):
        queryset = Person.objects.all()
        serializer = PersonSerializer(queryset, many=True)
        return Response(serializer.data)

在此处输入图像描述

标签: pythondjangodjango-rest-framework

解决方案


根据您的配置,它应该尝试这个 URLapi/v2/people/people/


或者改变

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api-path/', include('rest_framework.urls')),
    path('api/v2/', include(router.urls), name="people") # removed `people/`
]

然后访问api/v2/people/


推荐阅读