亲近DjangoRestFramework的第一步
2023-09-07 10:26:45
有时候,我们想构建仅限于后端的应用程序,而无需提供用户界面。要做到这一点,我们可以使用 DjangoRestFramework,它是基于 Django 的纯 API 开发工具。
认识DjangoRestFramework
DjangoRestFramework 是一个用于构建 Web API 的开源框架。它使创建可用于移动设备、Web 应用程序和其他客户端的 API 变得很容易。它以其灵活性、可扩展性和安全性而闻名。
初识DjangoRestFramework
使用 DjangoRestFramework 创建 API 的第一步是安装它。您可以使用以下命令通过 pip 安装它:
pip install djangorestframework
一旦安装了 DjangoRestFramework,您就可以开始创建 API 了。为此,您需要创建一个新的 Django 项目并安装必要的应用程序。
创建Django项目
要创建一个新的 Django 项目,您可以使用以下命令:
django-admin startproject myproject
这将在当前目录中创建一个名为 myproject 的新项目。
安装应用程序
要安装 DjangoRestFramework 应用程序,您需要在项目文件夹中的 settings.py 文件中添加以下行:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
]
创建模型
接下来,您需要创建一个模型来存储您的数据。模型是 Python 类,它了数据在数据库中的存储方式。要创建模型,您需要在项目文件夹中的 models.py 文件中添加以下代码:
from django.db import models
class Task(models.Model):
title = models.CharField(max_length=200)
completed = models.BooleanField(default=False)
def __str__(self):
return self.title
这个模型定义了一个名为 Task 的表,该表有两个字段:title 和 completed。title 字段是一个字符串字段,可以存储最多 200 个字符。completed 字段是一个布尔字段,可以存储 True 或 False 值。
创建API视图
现在您已经创建了一个模型,是时候创建一个API视图了。API视图是处理 API 请求并返回响应的 Python 函数。要创建 API 视图,您需要在项目文件夹中的 views.py 文件中添加以下代码:
from rest_framework import viewsets, serializers
class TaskSerializer(serializers.ModelSerializer):
class Meta:
model = Task
fields = '__all__'
class TaskViewSet(viewsets.ModelViewSet):
queryset = Task.objects.all()
serializer_class = TaskSerializer
这个视图类定义了一个 API 视图,该视图可以用于处理对 Task 模型的请求。queryset 属性指定要由视图处理的数据,serializer_class 属性指定要用于序列化数据的序列化器类。
添加URL配置
现在您已经创建了 API 视图,是时候在项目文件夹中的 urls.py 文件中添加 URL 配置了。URL 配置告诉 Django 如何将请求路由到视图。要添加 URL 配置,您需要在项目文件夹中的 urls.py 文件中添加以下代码:
from django.urls import path, include
urlpatterns = [
path('api/', include('myproject.urls')),
]
这个 URL 配置将所有以 /api/ 开头的请求路由到 myproject.urls 模块。
创建myproject/urls.py文件
在项目文件夹中创建一个名为 myproject/urls.py 的文件,并在其中添加以下代码:
from django.urls import path, include
from . import views
urlpatterns = [
path('tasks/', views.TaskViewSet.as_view({'get': 'list', 'post': 'create'})),
path('tasks/<int:pk>/', views.TaskViewSet.as_view({'get': 'retrieve', 'put': 'update', 'delete': 'destroy'})),
]
这个 URL 配置将对 /api/tasks/ 的 GET 和 POST 请求路由到 TaskViewSet 的 list 和 create 方法,并将对 /api/tasks/int:pk/ 的 GET、PUT 和 DELETE 请求路由到 TaskViewSet 的 retrieve、update 和 destroy 方法。
启动服务器
现在您已经完成了所有设置,是时候启动服务器了。您可以使用以下命令启动服务器:
python manage.py runserver
这将在 localhost:8000 上启动服务器。
使用API
现在服务器已经启动,您可以使用 API 了。您可以使用 curl 或 Postman 等工具来发送请求到 API。例如,要获取所有任务,您可以使用以下命令:
curl http://localhost:8000/api/tasks/
这将返回所有任务的 JSON 响应。
要创建新任务,您可以使用以下命令:
curl -X POST -H "Content-Type: application/json" -d '{"title": "Buy milk"}' http://localhost:8000/api/tasks/
这将创建一个新任务并返回该任务的 JSON 响应。
要检索特定任务,您可以使用以下命令:
curl http://localhost:8000/api/tasks/1/
这将返回具有 ID 1 的任务的 JSON 响应。
要更新特定任务,您可以使用以下命令:
curl -X PUT -H "Content-Type: application/json" -d '{"title": "Buy eggs"}' http://localhost:8000/api/tasks/1/
这将更新具有 ID 1 的任务并返回该任务的 JSON 响应。
要删除特定任务,您可以使用以下命令:
curl -X DELETE http://localhost:8000/api/tasks/1/
这将删除具有 ID 1 的任务并返回一个空的 JSON 响应。
总结
DjangoRestFramework 是一个强大的工具,可用于构建 REST API。它易于使用,并且提供了许多功能,可以帮助您快速开发 API。