如何使用Django Rest框架创建一个基本的API

如何使用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

创建一个应用程序和模型

现在,让我们用命令创建一个应用程序。

python manage.py startapp apis
Python

现在应该已经注册了一个名为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',
]
Python

现在,在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"))
]
Python

创建一个模型
为了演示,创建和使用一个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
Python

现在我们的应用程序已经准备好了,让我们把数据序列化,并从这些数据中创建视图。

序列化

序列化器允许复杂的数据,如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')
Python

创建一个视图集

为了将数据渲染到前端,并处理来自用户的请求,我们需要创建一个视图。在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
Python

定义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'))
]
Python

在一切都成功准备好后,让我们运行一些命令来激活服务器。

运行服务器并检查API

运行以下命令来创建数据库,并运行服务器。

python manage.py makemigrations
python manage.py migrate
python manage.py runserver
Python

现在访问http://127.0.0.1:8000/geeks/ 。

如何使用Django Rest框架创建一个基本的API?

检查项目的代码,请点击这里

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程