Skip to main content

DRF方式创建接口

今天我们要介绍如何使用DRF的方式来实现同样的接口功能。首先我们先来安装DRF

安装和配置DRF

DRF是Python的一个第三方包,我们可以直接使用pip进行安装。命令如下:

pip install djangorestframework

然后我们将将 App 注册到列表:

在settings.py文件中,找到INSTALLED_APPS,加入'rest_framework', 如下所示。

# drf_vue_blog/settings.py

INSTALLED_APPS = [
...

'rest_framework',
]

创建序列化器

在使用DRF的时候,我们会创建一个序列化器,所谓的序列化器就是实现将Python转化为JSON格式数据。

01Python转json

在这个转化的过程中,我们可以加一些验证,比如说用户输入的一些信息,我们是可以对它进行验证的。通常我们会在我们的movie文件夹应用中创建一个文件,叫做serializers.py。接着我们从rest framework中导入这个serializers,并创建一个序列化器。我们来定一个类叫做MovieListSerializer,让它继承这里的serializers中的serializer类。代码如下:

# 从rest_framework模块中导入序列化器基类
from rest_framework import serializers

# 定义电影序列化器
class MovieSerializer(serializers.ModelSerializer):
# 定义id字段,设置为只读
id = serializers.IntegerField(read_only=True)

# 定义movie_name字段,限制最大长度为100个字符
movie_name = serializers.CharField(max_length=100)

接下来,我们就可以在我们的movie文件夹下的views.py视图文件中导入这个序列化器。修改代码如下:

# 从Django中导入render和JsonResponse函数
from django.shortcuts import render
from django.http import JsonResponse
# 从models模块中导入Movie模型
from .models import Movie
# 从.serializers模块中导入MovieListSerializer序列化器
from .serializers import MovieListSerializer

# 定义电影列表视图
def movie_list(request):
# 获取所有电影数据
movies = Movie.objects.all()
# 使用MovieListSerializer对电影数据进行序列化
serializer = MovieListSerializer(movies, many=True)
# 返回JSON格式的响应
return JsonResponse(serializer.data, safe=False)

重新启动一下服务,在vscode终端中输入如下代码:

python manage.py runserver

回到我们的浏览器地址栏输入:127.0.0.1:8000/api/movie/再访问这个接口,这回我们再看一下。那此时呢,这里我们就获取到了所有的电影的数据,包含了两个,一个是ID,一个是movie。如下图所示:

02获取所有电影数据.jpg

在使用这个DRF的时候,我们重点是创建这么一个serializers.py,把所有的需要序列化的内容全部放到这个文件中,然后对字段进行相应的处理。这就是一个最简单的DRF的实例。