Django REST framework

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的绝佳选择。

后端开发标签