【1.0】drf初识
【1.0】drf
初识
【一】前后端开发模式
【1】前后端混合开发
- 【示例】flask混合、
django
混合 - 【案例】
bbs
项目- 模板:dtl语法(django template language)模板语法 {{}} /{% %}
- 后端渲染 qs对象–遍历循环到模板中–使用模板语法渲染
- 渲染完成后 得到纯粹的html css js 不会再有模板语法了
- 返回到客户端浏览器(页面静态化)
【2】前后端分离
- 后端做完,只需要写接口api
- 前端专门负责前端
- 分开写完,再联调
【二】api
接口
【1】介绍
- 前后端分离,后端只需写接口,通过接口进行简单的数据交互
api
接口规定了前后端信息交互规则的url
链接,是前后端信息交互的媒介- 含有信息的
url
链接 127.0.0.1:8080/login/?name=zhou&age=19
127.0.0.1:8080/books/
- 含有信息的
【2】api
接口含有的内容
-
url
:url
链接 -
请求方式:get post delete put…
-
请求参数:
json
或xml
格式的key-value类型-
地址栏中:(例如
login/?name=zhou&age=18
数据携带着数据) -
请求体中:不同的编码格式 urlencoded,json,form-data …
# urlencoded:key=value的形式 -login/?name=zhou&age=16 # json:json字符串的形式 {'name':'zxq','age':'20'} # form-data :文件混合数据
-
-
响应结果:json或xml格式的数据
【3】(补充)请求协议:http
- 请求首行:协议,协议版本,请求地址,请求方式
- 请求头:key-value的形式
- 请求体:不同的编码格式
【三】接口测试工具
【1】软件介绍
- postman 老牌收费
apifox
国产免费postwoman
开源
【2】postman
- 功能单一,收费\
- 【下载】
- 官网下载https://www.postman.com/
- 选择版本(
windows x64
) - 下载好就是一个
Postman-win64-Setup.exe
,直接打开就会的到桌面快捷方式,直接使用
【3】apifox
=postman+swagger[接口文档]+Mock[模拟测试数据]+JMeter
[压测工具]
【四】restful规范
【1】介绍
- 书写接口大家约定俗成遵守restful规范
- restful是一种定义
web API
接口的设计风格,尤其适用于前后端分离的应用模式中
【2】十条规范
-
(1)数据的安全保障–
url
链接使用https
- `http` - `https`更安全
-
(2)接口中带有
api
标识- https://api.baidu.com - https://www.baidu.com/api
-
(3)接口中中带版本标识
- https://api.baidu.com/v1 - https://api.baidu.com/v2
-
(4)数据命名的时候,尽量使用名词(可用复数)
- https://api.baidu.com/users - https://api.baidu.com/books - https://api.baidu.com/book
-
(5)通过请求方式,决定资源操作方式(增删查改—>curd)
- https://api.baidu.com/books - get请求:获取所有书 - https://api.baidu.com/books - post请求:新增一本书书 - https://api.baidu.com/books/1 - get请求:获取主键为1的书 - https://api.baidu.com/books/1 - put请求:整体修改主键为1的书 - https://api.baidu.com/books/1 - delete请求:删除主键为1的书
-
(6)请求地址中带过滤条件
https://api.example.com/v1/zoos?name=大象
-
(7)响应中带状态码
-
http响应状态码:
1xx,2xx,3xx,4xx,5xx
-
但是公司自己会定义状态码
- 例如 100错误 101…错误
-
一般,一个软件都有固定的状态码,出现错误,可以直接搜状态码
-
-
(8)响应中带错误信息
-{code:101,msg:"用户名密码错误"} -{code:100,msg:"成功"}
-
(9)返回结果,针对不同的操作,有不同的返回规范
#get请求返回所有结果 GET /collection:返回资源对象的列表(数组) [{name:红楼梦,price:100},{name:红楼梦1,price:90}]
#get请求返回某个数据 GET /collection/resource:返回单个资源对象{name:红楼梦,price:100}
#post请求增加数据--返回增加的数据 POST /collection:返回新生成的资源对象-{name:红楼梦,price:100}
#put返回完整的资源对象 PUT /collection/resource:返回完整的资源对象-{name:红楼梦,price:100}
#delete删除数据 返回一个空文档 DELETE /collection/resource:返回一个空文档
-
(10)返回的数据中带有url链接
【3】比较好的接口返回格式
-
【示例】
{"code": 0,"msg": "ok","results":[{"name":"肯德基(罗餐厅)","location":{"lat":31.415354,"lng":121.357339},"address":"月罗路2380号","province":"上海市","city":"上海市","area":"宝山区","street_id":"339ed41ae1d6dc320a5cb37c","telephone":"(021)56761006","detail":1,"uid":"339ed41ae1d6dc320a5cb37c"}...] }
【五】序列化和反序列化
【1】介绍
- 序列化:将自己的数据—序列化成—别人想要的数据格式(自己–>别人)
- 反序列化:将别人的数据格式—序列化成–自己想要的数据格式(别人–>自己)
【2】接口中序列化
- 【介绍】接口是前后端数据交互的一个媒介,一些框架会在前后端数据交互的时候,帮助我们处理好数据的序列化和反序列化
- 【步骤】
django
框架举例- 序列化:把我们后端的数据【字典、列表、对象】(在
django
中获取到的数据默认是模型对象(queryset
对象))转化成指定的格式【json
格式字符串,pickle二进制】提供给别人 - 反序列化:如前端js传过来的json数据,对于python来说就是字符串,需要反序列化成模型类对象
- 序列化:把我们后端的数据【字典、列表、对象】(在
【六】drf
安装和快速使用
【1】介绍
- 全称
django rest framework
- 是
django
框架上,一个可以快速实现restful规范接口的快速开发框架
【2】安装
-
drf
是安装在django
之上的,目前的二版本支持django4.0
以上,所以要版本契合 -
#先控制django的版本 pip3 install django==4.2.14 #在django的基础上下载drf pip3 install djangorestframework --upgrade
【3】简单使用
-
要求:利用
django
框架,写出五个接口,接口中带有相关的信息参数 -
urls
中#在总urls做路由分发
-
models.py
#定义模型表 from django.db import modelsclass Book(models.Model):name = models.CharField(max_length=32)price = models.IntegerField()
-
views
中#定义视图函数 from .models import Book from .serializer import BookSerializer from rest_framework.viewsets import ModelViewSetclass BookView(ModelViewSet):serializer_class = BookSerializerqueryset = Book.objects.all()
-
serializer.py
from rest_framework import serializers from .models import Book class BookSerializer(serializers.ModelSerializer):class Meta:model=Bookfields='__all__'
相关文章:
【1.0】drf初识
【1.0】drf初识 【一】前后端开发模式 【1】前后端混合开发 【示例】flask混合、django混合【案例】bbs项目 模板:dtl语法(django template language)模板语法 {{}} /{% %}后端渲染 qs对象–遍历循环到模板中–使用模板语法渲染渲染完成后 得到纯粹的…...
SparkSQL---编程模型的操作,数据加载与落地及自定义函数的使用
一、SparkSQL编程模型的创建与转化 1、DataFrame的构建 people.txt数据: 1 zhangsan 20 2 lisi 29 3 wangwu 25 4 zhaoliu 30 5 tianqi 35 6 kobe 40 people.json数据:在SparkSQL—简介及RDD V.S DataFrame V.S Dataset编程模型详解里 1、从Spark数据…...

文件解析漏洞--IIS--Vulhub
文件解析漏洞 一、IIS解析漏洞 用windowserver2003安装IIS测试 1.1 IIS6.X 方法一:目录解析 在网站下建立文件夹的名字为.asp/.asa的文件夹,其目录内的任何扩展名的文件都被IIS当作asp文件来解析并执行。 1.txt文件里是asp文件的语法查看当前时间 方…...

你知道缓存的这个问题到底把多少程序员坑惨了吗?
在现代系统中,缓存可以极大地提升性能,减少数据库的压力。 然而,一旦缓存和数据库的数据不一致,就会引发各种诡异的问题。 我们来看看几种常见的解决缓存与数据库不一致的方案,每种方案都有各自的优缺点 先更新缓存&…...

飞创直线模组桁架机械手优势及应用领域
随着工业自动化和智能制造的发展,直线模组桁架机械手极大地减轻了人类的体力劳动负担,在危险性、重复性高的作业环境中展现出了非凡的替代能力,引领着工业生产向自动化、智能化方向迈进。 一、飞创直线模组桁架机械手优势 飞创直线模组桁架…...

TongHttpServer 简介
1. 概述 随着网络技术的飞速发展,高并发大用户场景越来越普遍,单一应用服务节点已经不能满足并发需求,为了提高整个系统可靠性,扩展性,吞吐率,通常将多个应用服务器通过硬负载/软负载组成集群,负载均衡器根据不同负载算法将请求分发到各个应用服务器节点。 Tong…...
回溯法---组合总和
题目: 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限…...

将Android Library项目发布到JitPack仓库
将项目代码导入Github 1.将本地项目目录初始化为 Git 仓库。 默认情况下,初始分支称为 main; 如果使用 Git 2.28.0 或更高版本,则可以使用 -b 设置默认分支的名称。 git init -b main 如果使用 Git 2.27.1 或更低版本,则可以使用 git symbo…...

JAVAWeb实战(后端篇)
因为前后端代码内容过多,这篇只写后端的代码,前端的在另一篇写 项目实战一: 1.创建数据库,表等数据 创建数据库 create database schedule_system 创建表,并添加内容 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ---------…...

【vs】实用调试技巧——学会写优秀的代码!
🦄个人主页:小米里的大麦-CSDN博客 🎏所属专栏:https://blog.csdn.net/huangcancan666/category_12718530.html ⚙️操作环境:Visual Studio 2022 目录 一、前言 二、什么是BUG? 三、调试是什么?有多重要? 一名优秀…...
数组声明方式
数组声明方式 一、 一维数组 元素数据类型[] 数组名; // 推荐元素数据类型 数组名[]; 二、 二维数组 元素数据类型[][] 数组名称; // 推荐元素数据类型 数组名称[][];元素数据类型[] 数组名称[]; 注: 对于第三种方式元素数据类型[] 数组名称[];,可…...

Docker中Docker网络-理解Docker0与自定义网络的使用示例
场景 CentOS7中Docker的安装与配置: CentOS7中Docker的安装与配置_centos docker sock-CSDN博客 在上面安装好Docker之后。 关于对Docker中默认docker0以及自定义网络的使用进行学习。 注: 博客:霸道流氓气质-CSDN博客 实现 理解dock…...
领域驱动大型结构之SYSTEM METAPHOR(系统隐喻)
在领域驱动设计(Domain-Driven Design, DDD)中,"System Metaphor" 是一种用于帮助开发团队和业务人员在理解和沟通系统时使用的概念模型。虽然 "System Metaphor" 并不是 DDD 的核心概念,但它在敏捷开发方法&…...

web前端开发一、VScode环境搭建
1、VScode安装live server插件,写完代码后,保存就会在浏览器自动更新,不需要再去浏览器点击刷新了 2、创建html文件 3、在文件中输入感叹号 ! 4、选择第一个,然后回车,就会自动输入html的标准程序 5、…...
DiAD代码use_checkpoint
目录 1、梯度检查点理解2、 torch.utils.checkpoint.checkpoint函数 1、梯度检查点理解 梯度检查点(Gradient Checkpointing)是一种深度学习优化技术,它的目的是减少在神经网络训练过程中的内存占用。在训练深度学习模型时,我们需…...

nginx出现Refused to apply inline style because it violates
Content Security Policy的错误。根据错误提示,nginx拒绝应用内联样式,因为它违反了内容安全策略(Content Security Policy)。内容安全策略是一种浏览器机制,用于防止潜在的安全漏洞,通过限制从外部来源加载…...

【中项第三版】系统集成项目管理工程师 | 第 11 章 规划过程组⑥ | 11.15 - 11.17
前言 第11章对应的内容选择题和案例分析都会进行考查,这一章节属于10大管理的内容,学习要以教材为准。本章上午题分值预计在15分。 目录 11.15 规划资源管理 11.15.1 主要输入 11.15.2 主要工具与技术 11.15.3 主要输出 11.16 估算活动资源 11.1…...
基础警务互联网app
智慧公安以大数据、云计算、人工智能、物联网和移动互联网技术为支撑,以“打、防、管、控”为目的,综合研判为核心,共享信息数据资源,融合业务功能,构建公安智慧大数据平台,实现公安信息数字化、网络化和智…...

为了方便写CURD代码,我在UTools写了个插件SqlConvert来生成代码!
-1. 前言 为了方便摸鱼,我之前写过一个通过sql生成代码的工具,但是服务器到期了,也就懒得重新部署了。 技术框架是 SpringBoot MybatisPlus Velocity Vue ElementUI Sql-ParseeSql-Parser-ui 0. Utools应用安装 官网地址: https://u.too…...

在国产芯片上实现YOLOv5/v8图像AI识别-【2.2】RK3588上C++开发环境准备及测试更多内容见视频
本专栏主要是提供一种国产化图像识别的解决方案,专栏中实现了YOLOv5/v8在国产化芯片上的使用部署,并可以实现网页端实时查看。根据自己的具体需求可以直接产品化部署使用。 B站配套视频:https://www.bilibili.com/video/BV1or421T74f 板子…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...

Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...

C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...

【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统
Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...