django REST framework(DRF)教程

Django DRF API

  1. Django 基本使用
  2. Django DRF序列化器
  3. Django DRF视图
  4. Django DRF常用功能

Django 基本使用

  • 前后端分离开发模式
  • 认识RestFulAPI
  • 回顾Django开发模式
  • Django REST Framework初探

前后端分离开发模式

在这里插入图片描述
前后端分离前:前端页面看到的效果都是由后端控制,即后端渲染HTML页面,前端与后端的耦合度很高。

前后端分离前存在的问题:

  • PC、APP、Pad等多端流行
  • 前后端开发职责不清晰:各司其职,最大程度减少开发难度,方便协作
  • 开发效率问题,一般后端开发需先等前端页面准备好,有时前端也一直配合后端,能力受限
  • 前后端代码混在一起,日积月累,维护成本增加
  • 后端开发语言和模板耦合

在这里插入图片描述
前后端分离后:后端仅返回前端所需要的数据,不再渲染HTML页面,不再控制前端的效果,至于前端展示什么效果,都由前端自己决定。

认识RestFulAPI

什么是RestfulAPI:
• REST(Representational State Transfer,表征状态转移)是一种Web服务的软件架构风格。
描述网络中客户端与服务端的一种交互方式,它本身不常用,常用的是如何设计RestfulAPI
(REST风格的网络接口)
• RestfulAPI风格就是把所有的数据都当做资源,对表的操作就是对资源操作
• 资源就是指的URL,基于URL对资源操作,Web服务在URL上支持一系列请求方法,如下表所
示。

HTTP方法数据处理说明
POST新增新增一个资源
GET获取获取一个资源
PUT更新更新一个资源
DELETE删除删除一个资源

示例:
非REST的URL:http://ip/get_user?id=123
REST的URL:http://ip/user/123

回顾Django开发模式

在这里插入图片描述
工作流程图

通过一个用户信息管理案例回顾Django开发模式!
目标:
• 熟悉Django项目创建流程
• 熟悉Django与HTML模板渲染
• 熟悉Ajax前后端数据交互
• 熟悉ORM数据库操作

Django REST Framework初探

Django REST framework (简称:DRF)是一个强大而灵活的 Web API 工具。
遵循RESTFullAPI风格,功能完善,可快速开发API平台。
官网文档:https://www.django-rest-framework.org

Django REST framework 最新版使用要求:
• Python(3.6、3.7、3.8、3.9、3.10)
• Django(2.2、3.0、3.1、3.2、4.0)

安装:

pip install djangorestframework

添加rest_framework到INSTALLED_APPS设置中:

INSTALLED_APPS = [
... 'rest_framework'
,
]

示例:实现用户增删改查的API
步骤:

  1. 创建APP
  2. 定义数据模型并同步数据库
  3. 编写序列化器文件
  4. 编写视图
  5. 添加API路由

1、创建APP

python manage

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/75505.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】Orin NX + Ubuntu22.04配置国内源

1、获取源 清华源 arm 系统的源,可以在如下地址获取到 https://mirror.tuna.tsinghua.edu.cn/help/ubuntu-ports/ 选择HTTPS,否则可能报错: 明文签署文件不可用,结果为‘NOSPLIT’(您的网络需要认证吗?)查看Orin NX系统版本 选择jammy的源 2、更新源 1)备份原配…

【含文档+PPT+源码】基于微信小程序的社交摄影约拍平台的设计与实现

项目介绍 本课程演示的是一款基于微信小程序的社交摄影约拍平台的设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系…

JDBC常用的接口

一、什么是JDBC JDBC是Java语言连接数据库的接口规范。 二、JDBC的体系 1、Java官方提供一个操作数据库的抽象接口 抽象接口有很多的接口和抽象类。 例如:Driver、Connection、Statement。 2、各个数据库厂商提供各自的Java实现类 需要各自实现具体的细节。 例如&am…

容器适配器-stack栈

C标准库不只是包含了顺序容器,还包含一些为满足特殊需求而设计的容器,它们提供简单的接口。 这些容器可被归类为容器适配器(container adapter),它们是改造别的标准顺序容器,使之满足特殊需求的新容器。 适配器:也称配置器,把一…

[250403] HuggingFace 新增检查模型与电脑兼容性的功能 | Firefox 发布137.0 支持标签组

目录 Hugging Face 让寻找兼容的 AI 模型变得更容易Firefox 137 版本更新摘要 Hugging Face 让寻找兼容的 AI 模型变得更容易 Hugging Face 是一个流行的在线平台,用于访问开源人工智能 (AI) 工具和模型。该平台推出了一项有用的新功能,允许个人轻松检查…

.NET 创建MCP使用大模型对话二:调用远程MCP服务

在上一篇文章.NET 创建MCP使用大模型对话-CSDN博客中,我们简述了如何使用mcp client使用StdIo模式调用本地mcp server。本次实例将会展示如何使用mcp client模式调用远程mcp server。 一:创建mcp server 我们创建一个天气服务。 新建WebApi项目&#x…

Redis 中 Set(例如标签) 和 ZSet(例如排行榜) 的详细对比,涵盖定义、特性、命令、适用场景及总结表格

以下是 Redis 中 Set 和 ZSet 的详细对比,涵盖定义、特性、命令、适用场景及总结表格: 1. 核心定义 数据类型SetZSet(Sorted Set)定义无序的、唯一的字符串集合,元素不重复。有序的、唯一的字符串集合,每个…

解决Spring参数解析异常:Name for argument of type XXX not specified

前言 在开发 Spring Boot 应用时,我们常遇到类似 java.lang.IllegalArgumentException: Name for argument not specified 的报错。这类问题通常与方法参数名称的解析机制相关,尤其在使用 RequestParam、PathVariable 等注解时更为常见。 一、问题现象与…

刚刚,OpenAI开源PaperBench,重塑顶级AI Agent评测

今天凌晨1点,OpenAI开源了一个全新的AI Agent评测基准——PaperBench。 这个基准主要考核智能体的搜索、整合、执行等能力,需要对2024年国际机器学习大会上顶尖论文的复现,包括对论文内容的理解、代码编写以及实验执行等方面的能力。 根据O…

Golang封装Consul 服务发现库

以下是一个经过生产验证的 Consul 服务发现封装库,支持注册/注销、健康检查、智能发现等核心功能,可直接集成到项目中: package consulimport ("context""fmt""log""math/rand""net""os""sync"&quo…

自适应信号处理任务(过滤,预测,重建,分类)

自适应滤波 # signals creation: u, v, d N = 5000 n = 10 u = np.sin(np.arange(0, N/10., N/50000

PyTorch深度学习框架 的基础知识

目录 1.pyTorch检查是否安装成功 2.PyTorch的张量tensor 基础创建方式(三种) 2.2用列表创建tensor 2.2使用元组创建 tensor 2.3使用ndarray创建创建 tensor 2.4 快速创建tensor的常用方法 3.pyTorch中的张量tensor的常用属性 4. tensor中的基础数据…

MySQL学习集--DDL

DDL 数据库操作 查询所有数据库 SHOW DATABASES;查询当前数据库 SELECT DATABASE();创建 CREATE DATABASE[IF NOT EXISTS]数据库名[DEFAULT CHARSET 字符集][COLLATE 排序规则];删除 DROR DATABASE[IF EXISTS]数据库名;使用 USE 数据库名;表操作 创建表格 CREATE TABL…

Vue 3 中按照某个字段将数组分成多个数组

方法一:使用 reduce 方法 const originalArray [{ id: 1, category: A, name: Item 1 },{ id: 2, category: B, name: Item 2 },{ id: 3, category: A, name: Item 3 },{ id: 4, category: C, name: Item 4 },{ id: 5, category: B, name: Item 5 }, ];const grou…

LeetCode刷题 -- 48. 旋转图像

题目 算法题解:顺时针旋转矩阵(90度) 1. 算法描述 给定一个 n n 的二维矩阵,请将矩阵顺时针旋转 90 度。 例如: 输入: [[1,2,3],[4,5,6],[7,8,9] ]输出: [[7,4,1],[8,5,2],[9,6,3] ]2. 思…

Vulkan进阶系列1 - Vulkan应用程序结构(完整代码)

一: 概述 在前面的20多篇文章中,我们了解了Vulkan的基础知识,和相关API的使用,接下来我们要从零开始写一套完整Vulkan应用程序,在这个过程中加深对Vulkan中的各种概念的理解。 Vulkan 应用程序一般遵循 初始化 -> 运行循环 -> 资源清理 的结构,本实例也基本遵循了…

VTK的两种显示刷新方式

在类中先声明vtk的显示对象 vtkRenderer out_render; vtkVertexGlyphFilter glyphFilter; vtkPolyDataMapper mapper; // 新建制图器 vtkActor actor; // 新建角色 然后在init中先初始化一下: out_rend…

【CSS3】04-标准流 + 浮动 + flex布局

本文介绍浮动与flex布局。 目录 1. 标准流 2. 浮动 2.1 基本使用 特点 脱标 2.2 清除浮动 2.2.1 额外标签法 2.2.2 单伪元素法 2.2.3 双伪元素法(推荐) 2.2.4 overflow(最简单) 3. flex布局 3.1 组成 3.2 主轴与侧轴对齐方式 3.2.1 主轴 3.2.2 侧轴 3.3 修改主…

详细介绍一下C++的按位运算

在C中,按位运算(Bitwise Operations) 是直接对二进制位(bit)进行操作的低级运算,常用于处理硬件、优化性能、加密算法或底层资源管理。以下是按位运算符的详细说明、示例和典型应用场景: 1.按位…

Flask与 FastAPI 对比:哪个更适合你的 Web 开发?

在开发 Web 应用时,Python 中有许多流行的 Web 框架可以选择,其中 Flask 和 FastAPI 是两款广受欢迎的框架。它们各有特色,适用于不同的应用场景。本文将从多个角度对比这两个框架,帮助你更好地选择适合的框架来构建你的 Web 应用…