如何使用Django Rest框架创建一个基本的API
Django REST框架是对默认Django框架的一个封装,基本上用于创建各种类型的API。在通过REST框架创建API之前有三个阶段,将Model的数据转换为JSON/XML格式(序列化),将这些数据渲染到视图中,创建一个用于映射到视图集的URL。
这篇文章围绕着如何使用Django REST框架创建一个基本的API。它假定你熟悉Django基础知识–Django教程。同时,安装了Django REST框架。假设你已经用Django创建了一个名为geeksforgeeks的项目,让我们启动Django REST框架。
步骤
- 将rest_framework添加到INSTALLED_APPS。
- 创建一个应用程序和模型
- Serialization
- 创建一个视图集
- 定义API的URLs
- 运行服务器并检查API
将rest_framework添加到INSTALLED_APPS
要在你的项目中初始化REST框架,进入settings.py,在INSTALLED_APPS的底部添加 “rest_framework”。
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
]
创建一个应用程序和模型
现在,让我们用命令创建一个应用程序。
python manage.py startapp apis
现在应该已经注册了一个名为apis的文件夹。让我们把这个应用添加到INSTALLED_APPS和urls.py中。
In, settings.py,
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'apis',
]
现在,在urls.py中添加apis urls。在geeksforgeeks.urls.py ,
from django.contrib import admin
# include necessary libraries
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
# add apis urls
path('', include("apis.urls"))
]
创建一个模型
为了演示,创建和使用一个API,让我们创建一个名为 “GeeksModel “的模型。在apis/models.py中
from django.db import models
class GeeksModel(models.Model):
title = models.CharField(max_length = 200)
description = models.TextField()
def __str__(self):
return self.title
现在我们的应用程序已经准备好了,让我们把数据序列化,并从这些数据中创建视图。
序列化
序列化器允许复杂的数据,如querysets和模型实例,被转换为本地Python数据类型,然后可以很容易地呈现为JSON、XML或其他内容类型。序列化器还提供了反序列化,允许解析过的数据在首先验证了传入的数据后被转换回复杂类型。让我们开始创建一个序列化器,在文件apis/serializers.py中。
# import serializer from rest_framework
from rest_framework import serializers
# import model from models.py
from .models import GeeksModel
# Create a model serializer
class GeeksSerializer(serializers.HyperlinkedModelSerializer):
# specify model and fields
class Meta:
model = GeeksModel
fields = ('title', 'description')
创建一个视图集
为了将数据渲染到前端,并处理来自用户的请求,我们需要创建一个视图。在Django REST框架中,我们称这些为视图集,所以让我们在apis/views.py中创建一个视图。
# import viewsets
from rest_framework import viewsets
# import local data
from .serializers import GeeksSerializer
from .models import GeeksModel
# create a viewset
class GeeksViewSet(viewsets.ModelViewSet):
# define queryset
queryset = GeeksModel.objects.all()
# specify serializer to be used
serializer_class = GeeksSerializer
定义API的URLs
指定要访问的API的URL路径,在apis/urls.py中。
# basic URL Configurations
from django.urls import include, path
# import routers
from rest_framework import routers
# import everything from views
from .views import *
# define the router
router = routers.DefaultRouter()
# define the router path and viewset to be used
router.register(r'geeks', GeeksViewSet)
# specify URL Path for rest_framework
urlpatterns = [
path('', include(router.urls)),
path('api-auth/', include('rest_framework.urls'))
]
在一切都成功准备好后,让我们运行一些命令来激活服务器。
运行服务器并检查API
运行以下命令来创建数据库,并运行服务器。
python manage.py makemigrations
python manage.py migrate
python manage.py runserver
现在访问http://127.0.0.1:8000/geeks/ 。
检查项目的代码,请点击这里