针对该话题,我介绍一下关于Django DRF框架自带的路由和最简化的视图的完整攻略。
一、Django DRF框架自带的路由
在Django DRF框架中,提供了多种路由匹配方法,其中最常用的是DRF自带的路由匹配器。
首先,需要导入include
和default-router
两个路由相关的模块:
from django.urls import path, include
from rest_framework.routers import DefaultRouter
接着,定义一个名为router
的DefaultRouter
对象,并在其中添加对应的路由路径:
router = DefaultRouter()
router.register(r'users', UserViewSet)
其中,register()
方法的第一个参数是想要对其进行路由的路径名,第二个参数是对应的视图函数。
最后,将路由注册到url路由中:
urlpatterns = [
path('', include(router.urls))
]
这里的include()
方法的作用是将router.urls
中的路由路径都添加到url路由中。
通过以上步骤,我们完成了Django DRF框架自带的路由配置。
二、最简化的视图
在Django DRF框架中,视图函数通常为继承APIView
类的子类,同时可以使用Django DRF框架自带的响应类实现不同的响应。
例如:
from rest_framework.views import APIView
from rest_framework.response import Response
class HelloAPIView(APIView):
"""
简单的APIView示例
"""
def get(self, request, format=None):
"""
获取简单的信息
"""
return Response({'msg': 'hello, world!'})
在以上的代码中,我们定义了一个名为HelloAPIView
的类,它继承自APIView
类,并实现了get()
方法。通过Response
类,它可以返回由我们指定的响应数据。
在完成以上步骤之后,还需要将视图类添加到路由中。可以使用如下方式进行添加:
urlpatterns = [
path('hello/', HelloAPIView.as_view(), name='hello'),
]
以上的代码,将名为HelloAPIView
的类作为视图函数添加到了路径名为hello/
的路由中。
示例1
在这里,我们看一个最简的APIView
的代码示例:
from rest_framework.views import APIView
from rest_framework.response import Response
class DemoView(APIView):
def get(self, request):
return Response({'hello': 'world!'})
在上面的代码中,定义了一个名为DemoView
的APIView
视图,它实现了get()
方法,通过Response()
方法返回响应数据{'hello': 'world!'}
。
示例2
那么,接下来,我将展示如何自定义一个序列化器类,以便在视图函数中返回序列化的数据。示例如下:
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import serializers
class DemoSerializer(serializers.Serializer):
"""
序列化器定义
"""
name = serializers.CharField(max_length=10)
age = serializers.IntegerField()
addr = serializers.CharField(max_length=50)
class DemoView(APIView):
def get(self, request):
data = {'name': 'Tom', 'age': 20, 'addr': 'beijing'}
serializer = DemoSerializer(data=data)
serializer.is_valid(raise_exception=True)
return Response(serializer.validated_data)
在上面的代码中,我们首先定义了一个DemoSerializer
的序列化器类,并在其中定义了三个字段。
然后,在视图函数中,我们将要序列化的数据{'name': 'Tom', 'age': 20, 'addr': 'beijing'}
传递给DemoSerializer
序列化器,并使用is_valid()
方法进行验证,最后通过Response()
方法返回序列化后的数据。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:django drf框架自带的路由及最简化的视图 - Python技术站