1. 什么是Django REST framework
Django REST framework是一个用于构建Web API的强大且灵活的工具包。它是一个基于Django的应用,可以轻松地与现有的Django应用程序集成。此外,它还提供了一些有用的工具和库,以简化和加速API的开发和维护。
DRF提供了一些常用的功能,例如:基于类的视图、序列化、模型序列化、身份验证和权限,以及可以自定义的异常处理等。
2. DRF的安装和配置
2.1 安装
可以使用pip在命令行中安装Django REST framework:
pip install djangorestframework
2.2 添加至INSTALLED_APPS
安装成功后,需要将其添加至Django应用程序的INSTALLED_APPS中:
INSTALLED_APPS = [
#...
'rest_framework',
]
2.3 配置
为了使用DRF,需要在settings.py中添加必要的应用程序和配置。其中,添加以下行以启用REST framework核心类:
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.AllowAny',
],
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
],
}
3. DRF视图
DRF基于Django视图系统,并为API支持多种不同的视图类型,包括基于函数的视图和基于类的视图。
基于类的视图是DRF特有的功能,Django本身不提供该功能。基于类的视图是一个常用的Python编程技术,可大大简化代码,并提供更好的可重用性和可读性。
3.1 基于函数的视图
基于函数的视图是Django应用程序中常用的视图类型。它通常由一个函数组成,该函数通常接受HTTP请求作为输入,并返回HTTP响应。
以下是一个使用DRF进行基于函数的视图的示例:
from rest_framework.decorators import api_view
from rest_framework.response import Response
@api_view(['GET'])
def hello_world(request):
return Response({'message': 'Hello, World!'})
在上面的示例代码中,我们定义一个名为hello_world的函数,该函数标记为@api_view装饰器,指定支持的HTTP方法(在这种情况下为GET)。该函数通过调用Response类构造函数并传递要返回的响应数据来返回响应。
3.2 基于类的视图
基于类的视图是DRF中最强大和最常用的视图类型之一。它提供了大量有用的功能,例如:支持HTTP方法(GET、POST、PUT等)、身份验证和权限等。
以下是一个使用DRF进行基于类的视图的示例:
from rest_framework.views import APIView
from rest_framework.response import Response
class HelloView(APIView):
def get(self, request):
return Response({'message': 'Hello, World!'})
在上述示例代码中,我们定义了一个名为HelloView的类,该类继承自APIView。我们通过覆盖方法get来实现对HTTP GET请求的响应。最后通过返回Response对象,返回要返回的数据。
4. DRF序列化
DRF提供了一组用于序列化数据的强大工具。序列化可以将Python对象转换为JSON、XML或其他格式,以便Web API可以将其返回到客户端。
以下是一个使用DRF进行序列化的示例:
from rest_framework import serializers
class HelloSerializer(serializers.Serializer):
message = serializers.CharField(max_length=200)
在上述示例代码中,我们定义了一个名为HelloSerializer的序列化器。它的作用是将Python对象转换为JSON格式。这是通过继承序列化器基类,并添加一个或多个字段来实现的。
5. DRF路由
路由是Web API的另一个重要组成部分。它将URL(统一资源定位符)映射到视图,并确定视图如何响应HTTP请求。
以下是一个使用DRF进行路由的示例:
from django.urls import path, include
from rest_framework import routers
router = routers.DefaultRouter()
urlpatterns = [
path('', include(router.urls)),
]
在上述示例代码中,我们使用Django路由和DRF路由器来创建Web API路由。我们导入了DRF的DefaultRouter,并将其实例化。然后我们将其添加到urlpatterns中的空路径中。这样DRF将使用该路由器将URL映射到视图。
6. 结论
综上所述,Django REST framework是使用Django构建Web API的强大工具。它支持多种视图类型和路由,提供强大的身份验证和权限支持,并提供一组有用的序列化工具。
DRF具有强大的可扩展性和灵活性,可以让开发人员轻松构建可重用的API组件和模块。它是构建现代、高效且可维护的Web API的绝佳选择。