对Django的restful用法详解(自带的增删改查)

对Django的restful用法详解(自带的增删改查)

在Django中,可以使用Django Rest Framework (DRF)作为开发RESTful API的工具。DRF提供了一组用于快速构建API的工具,可帮助开发人员遵守RESTful原则。DRF具有自带的增删改查功能,可以非常方便地自动生成API,本文将详细介绍如何使用Django和DRF实现RESTful API的增删改查功能。

安装和配置DRF

要使用DRF,需要先安装它。可以通过pip命令进行安装,具体命令如下:

pip install djangorestframework

安装DRF后,需要将其添加到Django项目的INSTALLED_APPS中:

INSTALLED_APPS = [
    #...
    'rest_framework', \# 添加rest_framework应用程序
]

在项目的urls.py文件中添加以下代码,配置rest_framework所需的URL

from django.urls import include
from rest_framework import routers
from . import views

router = routers.DefaultRouter()  # 定义路由器
router.register(r'todos', views.TodoViewSet)  # 将TodoViewSet添加到路由器中

urlpatterns = [
    path('', include(router.urls)),  # 将路由器的URL添加到Django的URL组
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))  # 添加DRF的默认认证和权限URL
]

创建序列化器

序列化器是DRF的一个关键部分,其作用是将模型转换为序列化的JSON数据。 在本示例中,首先需要定义一个Todo模型,并创建TodoSerializer类将其序列化为JSON。

from rest_framework import serializers
from .models import Todo  # 引入Todo模型


class TodoSerializer(serializers.ModelSerializer):
    class Meta:
        model = Todo
        fields = ['id', 'title', 'description', 'completed', 'created_at']
        read_only_fields = ['id', 'created_at'] # 将id和created_at设置为只读

创建视图

视图是DRF中另一个关键组件,其作用是处理请求并返回响应。 在本例中,我们创建了一个TodoViewSet视图集,它提供了标准的RESTful行为 - 列出,检索,创建,更新和删除。

from rest_framework import viewsets
from rest_framework.decorators import action
from rest_framework.response import Response
from .models import Todo
from .serializers import TodoSerializer


class TodoViewSet(viewsets.ModelViewSet):
    queryset = Todo.objects.all()
    serializer_class = TodoSerializer

    @action(detail=True, methods=['post'])
    def complete(self, request, pk=None):
        todo = self.get_object()
        todo.completed = True
        todo.save()
        serializer = self.get_serializer(todo)
        return Response(serializer.data)

示例1:创建Todo

1.发出POST请求:

curl -H "Content-Type: application/json" -X POST -d '{"title": "Test Todo", "description": "This is a test todo list item."}' http://localhost:8000/todos/

2.JSON格式的响应:

{
  "id": 1,
  "title": "Test Todo",
  "description": "This is a test todo list item.",
  "completed": false,
  "created_at": "2021-08-09T00:00:00Z"
}

示例2:更新Todo

1.发出PUT请求:

curl -H "Content-Type: application/json" -X PUT -d '{"title": "Test Todo - Updated", "description": "This is an updated test todo list item.", "completed": true}' http://localhost:8000/todos/1/

2.JSON格式的响应:

{
  "id": 1,
  "title": "Test Todo - Updated",
  "description": "This is an updated test todo list item.",
  "completed": true,
  "created_at": "2021-  08-09T00:00:00Z"
}

总结

本文介绍了如何使用Django和DRF创建RESTful API。 首先,我们安装并配置了DRF,然后创建了一个序列化器并定义了一个视图集。 最后,通过示例说明使用DRF的自带增删改查功能。 DRF提供了很多其他功能,如分页,搜索,过滤器等。 要使用它们,只需要添加适当的设置即可。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:对Django的restful用法详解(自带的增删改查) - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • pytorch中部分矩阵乘法和数组乘法的小结

    下面是关于“pytorch中部分矩阵乘法和数组乘法的小结”的攻略: 1. 矩阵乘法 在pytorch中,矩阵乘法是通过torch.matmul()函数实现的。矩阵乘法需要满足两个矩阵尺寸匹配的条件,即左矩阵的列数等于右矩阵的行数。 1.1 两个矩阵相乘 以下是两个矩阵相乘的示例: import torch a = torch.tensor([[1, 2], …

    人工智能概论 2023年5月25日
    00
  • pytorch 实现cross entropy损失函数计算方式

    下面是关于PyTorch实现交叉熵损失函数的完整攻略。 概述 交叉熵是用于测量分类模型预测输出与真实输出的差异的一种损失函数。在多分类问题中,常用的损失函数之一就是交叉熵损失函数。PyTorch提供了一种nn.CrossEntropyLoss()命令来实现对交叉熵损失函数的计算。 代码实现 import torch.nn as nn import torch…

    人工智能概论 2023年5月25日
    00
  • nginx 平滑重启与升级的实现方法

    Nginx 平滑重启与升级的实现方法 Nginx 是一种高性能的 Web 服务器,广泛应用于各种规模的网站和应用程序中。当我们需要对 Nginx 进行升级或重启时,为了不影响服务的正常运转,我们需要采用平滑重启的方式进行升级或者重启。 平滑重启的概念 平滑重启可以实现在不停止服务的情况下对 Nginx 进行升级与重启。其主要原理是启动一个新的 Nginx 进…

    人工智能概览 2023年5月25日
    00
  • 聊聊Spring Cloud Cli 初体验

    聊聊Spring Cloud Cli 初体验 简介 Spring Cloud CLI 是一个命令行工具,通过它我们可以在本地快速搭建Spring Cloud应用。CLI中包含了Spring Cloud应用开发所需的各种脚手架和依赖,并提供了代码生成、应用打包、测试运行等CLI命令,让我们能够更加轻松高效地进行Spring Cloud应用开发。 安装 安装Sp…

    人工智能概览 2023年5月25日
    00
  • python 三边测量定位的实现代码

    关于“python 三边测量定位的实现代码”的完整攻略,我将从以下几个方面进行详细讲解: 什么是三边测量定位 三边测量定位的基本原理 Python实现三边测量定位的示例代码 两条示例说明 什么是三边测量定位 三边测量定位,也被称为三角定位,是一种通过量测两个物体与观察点之间的距离,并通过计算来确定物体位置的技术。在工程和测绘中,三边测量定位是一种非常常见的方…

    人工智能概论 2023年5月25日
    00
  • 混淆矩阵Confusion Matrix概念分析翻译

    混淆矩阵(Confusion Matrix)概念分析翻译 混淆矩阵,也称为误差矩阵(Error Matrix),是机器学习中经常用于评估分类模型性能的矩阵。它可以展示模型在测试集上的分类结果与实际情况的对比情况,从而帮助我们了解模型的分类性能。 混淆矩阵通常由以下四个分类指标组成:真阳性(True Positive,TP)、假阳性(False Positiv…

    人工智能概览 2023年5月25日
    00
  • Python利用PyMuPDF实现PDF文件处理

    下面我将为您详细讲解Python利用PyMuPDF实现PDF文件处理的完整攻略。 概述 PyMuPDF是一个Python模块,能够实现对PDF文件读取、解析、编辑、创建等操作。在各种PDF文件处理场景中都有广泛的应用,比如:文本提取、PDF合并、PDF解密、PDF加密等。 安装PyMuPDF 在终端输入以下命令即可完成PyMuPDF的安装: pip inst…

    人工智能概览 2023年5月25日
    00
  • nginx+tomcat 通过域名访问项目的实例

    下面就是详细讲解“nginx+tomcat 通过域名访问项目”的完整攻略。 环境说明 服务器环境: CentOS 7(64位) nginx 1.16.1 tomcat 8.5.50 域名:example.com 目标项目:project 思路 通过nginx作为反向代理服务器,将访问example.com的请求转发到tomcat的特定端口,从而访问到项目。 …

    人工智能概览 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部