Django REST Framework ViewSet 使用教程:完整示例
ViewSet 是 Django REST Framework 中的一个类,它为我们提供了一组用于处理 API 请求的方法。使用 ViewSet 可以大大简化我们的代码,并且提高了代码的复用性。
下面是一个简单的例子,展示如何使用 ViewSet:
from rest_framework import viewsets
from rest_framework.response import Response
class MyViewSet(viewsets.ViewSet):
'A simple ViewSet for listing or retrieving users.'
def list(self, request):
queryset = User.objects.all()
serializer = UserSerializer(queryset, many=True)
return Response(serializer.data)
def retrieve(self, request, pk=None):
queryset = User.objects.all()
user = get_object_or_404(queryset, pk=pk)
serializer = UserSerializer(user)
return Response(serializer.data)
在这个例子中,我们定义了一个名为 MyViewSet 的 ViewSet。它有两个方法:list 和 retrieve。
list 方法用于获取所有用户的列表,并使用 UserSerializer 将其序列化为 JSON 格式。retrieve 方法用于获取单个用户的详细信息,并按照同样的方式序列化。
这个 ViewSet 可以通过 urls.py 文件进行路由。例如,下面是一个简单的路由配置:
from django.urls import path, include
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
router.register(r'users', MyViewSet, basename='user')
urlpatterns = [
path('', include(router.urls)),
]
在这个路由配置中,我们使用了 DefaultRouter 来自动生成路由。我们将 MyViewSet 注册到了名为“users”的 URL 上。这意味着我们可以通过访问“/users/”获取所有用户的列表,或者通过“/users/{pk}/”获取单个用户的详细信息。
这只是 ViewSet 的一个简单例子,但它应该能够说明如何使用 ViewSet 来处理 API 请求。
原文地址: https://www.cveoy.top/t/topic/lpq5 著作权归作者所有。请勿转载和采集!