【Django学习】(十五)API接口文档平台_项目流程分析_日志器_认证_授权
一、API接口文档平台
使用API接口文档不经可以很好的的维护接口数据,还给测试人员的接口测试工作带来了便利;
我们可以在全局配置文件中添加路由路径生成接口文档
1、使用docs接口文档维护接口
1.1在全局配置文件里指定用于支持coreapi的Schema
# 指定用于支持coreapi的Schema'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',
1.2在全局路由表中添加路径
from rest_framework.documentation import include_docs_urls
urlpatterns = [path('docs/', include_docs_urls(title='接口文档', description='非常友好的接口文档')),]
页面效果:

2、使用swaager接口文档维护接口
2.1 一定要先在配置表中注册drf_yasg,不然页面会报错
INSTALLED_APPS = ['drf_yasg',]
2.2 在全局路由表中添加路径
from rest_framework.documentation import include_docs_urls
schema_view = get_schema_view(openapi.Info(title="超人 API接口文档平台", # 必传default_version='v1', # 必传description="这是一个美轮美奂的接口文档",terms_of_service="http://api.keyou.site",contact=openapi.Contact(email="superman@qq.com"),license=openapi.License(name="BSD License"),),public=True,# permission_classes=(permissions.AllowAny,), # 权限类
)
urlpatterns = [path('swagger/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),]
页面效果:

2.3 我们还可以使用swaager文档转化为json或者yaml格式
from rest_framework.documentation import include_docs_urls
schema_view = get_schema_view(openapi.Info(title="超人 API接口文档平台", # 必传default_version='v1', # 必传description="这是一个美轮美奂的接口文档",terms_of_service="http://api.keyou.site",contact=openapi.Contact(email="superman@qq.com"),license=openapi.License(name="BSD License"),),public=True,# permission_classes=(permissions.AllowAny,), # 权限类
)
urlpatterns = [re_path(r'^swagger(?P<format>\.json|\.yaml)$', schema_view.without_ui(cache_timeout=0), name='schema-json'),]
页面效果:

3、使用redoc接口文档维护接口
3.1 一定要先在配置表中注册drf_yasg,不然页面会报错
INSTALLED_APPS = ['drf_yasg',]
3.2 在全局路由表中添加路径
from drf_yasg.views import get_schema_view
from drf_yasg import openapischema_view = get_schema_view(openapi.Info(title="超哥 API接口文档平台", # 必传default_version='v1', # 必传description="这是一个美轮美奂的接口文档",terms_of_service="http://api.keyou.site",contact=openapi.Contact(email="gaochao100@qq.com"),license=openapi.License(name="BSD License"),),public=True,# permission_classes=(permissions.AllowAny,), # 权限类
)
urlpatterns = [path('redoc/', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'),]
页面效果:

二、日志器
在全局配置表中添加日志器
# LOGGING指定日志器的相关配置
LOGGING = {# 指定日志版本'version': 1,# 指定是否禁用其他已存在的日志器'disable_existing_loggers': False,# 指定日志的输出格式'formatters': {# 指定普通的日志输出格式'simple': {'format': '%(asctime)s - [%(levelname)s] - [msg]%(message)s'},# 指定更详细的日志输出格式'verbose': {'format': '%(asctime)s - [%(levelname)s] - %(name)s - [msg]%(message)s - [%(filename)s:%(lineno)d ]'},},# 指定日志的过滤器'filters': {'require_debug_true': {'()': 'django.utils.log.RequireDebugTrue',},},# 定义日志的输出渠道'handlers': {# 指定控制台日志输出渠道'console': {'level': 'DEBUG','filters': ['require_debug_true'],'class': 'logging.StreamHandler','formatter': 'simple'},# 指定日志输出的日志配置'file': {'level': 'INFO','class': 'logging.handlers.RotatingFileHandler','filename': os.path.join(BASE_DIR, "logs/mytest.log"), # 日志文件的位置# 每一个日志文件的最大字节数'maxBytes': 100 * 1024 * 1024,# 指定日志文件总数'backupCount': 10,'formatter': 'verbose'},},# 指定日志器'loggers': {'mytest': { # 定义了一个名为mytest的日志器'handlers': ['console', 'file'],'propagate': True,'level': 'DEBUG', # 日志器接收的最低日志级别},}
}
使用日志器
# 导入logging模块
import logging
# 制定日志器对象,getLogger需要传递在settings-->LOGGING中,设置的日志器名称,必须要一致
my_logging=logging.getLogger('mytest')
my_logging.info('prijects的视图集类')
保存的日志文件信息为:

三、认证
全局认证类
drf的settings中有全局认证类

如果不指定授权类,则请求接口不受影响,仍然可以正常访问接口获取到返回数据;
如果指定授权类,则未登录时去请求接口,会返回未认证信息:

我们来创建一个用户
python manage.py createsuperuser
设置用户名、邮箱、密码

在database中的auth_user表里可以看到创建用户信息

当调用接口需要认证才能获取权限,但是用户没有认证时,需要我们进行登录

登录成功之后,就会进入之前访问的页面
局部认证类
有些接口并不是需要登录后才可以访问的,比如登录注册接口是需要一直暴露给用户使用的,这时候就需要给需要认证类的接口视图类定义局部认证类
优先级:局部认证类>全局认证类
from rest_framework.authentication import SessionAuthentication,BasicAuthentication
# 定义局部认证类
authentication_classes = [SessionAuthentication,BasicAuthentication]
四、授权
全局授权类
drf的settings中指定全局授权类
指定权限类(认证通过之后,会授予的权限)
默认的权限类为AllowAny,允许所有用户访问接口
指定只有登录之后,才具有访问接口的权限
'DEFAULT_PERMISSION_CLASSES': [# 默认的权限类为AllowAny,允许所有用户返回接口# 'rest_framework.permissions.AllowAny',# 指定只有登录之后,才具有访问接口的权限'rest_framework.permissions.IsAuthenticated',],
局部授权类
有些接口并不是需要登录后才可以访问的,比如登录注册接口是需要一直暴露给用户使用的,这时候就需要给需要授权类的接口视图类定义局部授权类(需要登录认证后才授权)
优先级:局部授权类>全局授权类
from rest_framework.permissions import IsAuthenticated
# 定义局部授权类
permission_classes = [IsAuthenticated]
相关文章:
【Django学习】(十五)API接口文档平台_项目流程分析_日志器_认证_授权
一、API接口文档平台 使用API接口文档不经可以很好的的维护接口数据,还给测试人员的接口测试工作带来了便利; 我们可以在全局配置文件中添加路由路径生成接口文档 1、使用docs接口文档维护接口 1.1在全局配置文件里指定用于支持coreapi的Schema # 指…...
经营简报及考核360表格
文章目录 经营简报效果图代码tableObjectSpanMethod.js 考核360委员会效果图 经营简报效果图不需要合并单元格且有汇总表头的 懒得封装了,所以整体没有封装 经营简报 效果图 代码 <template><el-tableref"tableRef":data"tableData.lengt…...
Spring Security 构建基于 JWT 的登录认证
一言以蔽之,JWT 可以携带非敏感信息,并具有不可篡改性。可以通过验证是否被篡改,以及读取信息内容,完成网络认证的三个问题:“你是谁”、“你有哪些权限”、“是不是冒充的”。 为了安全,使用它需要采用 …...
PyTorch从零开始实现Transformer
文章目录 自注意力Transformer块编码器解码器块解码器整个Transformer参考来源全部代码(可直接运行) 自注意力 计算公式 代码实现 class SelfAttention(nn.Module):def __init__(self, embed_size, heads):super(SelfAttention, self).__init__()self.e…...
运动蓝牙耳机什么牌子的好用、最好用的运动蓝牙耳机推荐
音乐是运动的灵魂,而一款优秀的运动耳机则是让音乐与我们的身体完美融合的关键。今天,我推荐五款备受运动爱好者喜爱的耳机,它们以卓越的音质、舒适的佩戴和出色的稳定性能脱颖而出,助你在运动中创造最佳状态。 1、NANK南卡Runne…...
HTTP、HTTPS协议详解
文章目录 HTTP是什么报文结构请求头部响应头部 工作原理用户点击一个URL链接后,浏览器和web服务器会执行什么http的版本持久连接和非持久连接无状态与有状态Cookie和Sessionhttp方法:get和post的区别 状态码 HTTPS是什么ssl如何搞到证书nginx中的部署 加…...
【算法与数据结构】222、LeetCode完全二叉树的节点个数
文章目录 一、题目二、一般遍历解法三、利用完全二叉树性质四、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、一般遍历解法 思路分析:利用层序遍历,然后用num记录节点数量。其他的例如…...
登录和注册表单的11个HTML最佳实践
原文:11 HTML best practices for login & sign-up forms 原作者:Andrey Sitnik 翻译已获原文作者许可,禁止转载和商用 大多数网站都有登录或注册表单;它们是业务转换的关键部分。然而,即使是流行的站点也没有实现本文中提到的…...
Mysql删除历史数据
Mysql定时删除历史数据 实现 1.创建存储过程(函数) SQL DROP PROCEDURE IF EXISTS KeepDatasWith30Days CREATE PROCEDURE KeepDatasWith30Days() BEGINSELECT maxId:max(Id) FROM tableName WHERE CreateTime<DATE(DATE_SUB(NOW(),INTERVAL 31 D…...
Python—数据结构(一)
先放一张自己学习和整理归纳的思维导图,以便让大家都知道我自己的整体学习路线。 数据结构的学习路上内容枯燥,但坚持下来一定有很大的收获!加油💪🏻! 数据结构 数据的概念数据元素: 若干基本…...
离线环境安装flask依赖包
找到当前版本需要的所有依赖包,生产flask项目生成项目依赖包文件requirements.txt 1)在当前项目目录下 生成requirements文件:pip freeze >requirements.txt 执行requirements文件,安装依赖包:pip install -r requirements.t…...
ChatGPT与Claude对比分析
一 简介 1、ChatGPT: 访问地址:https://chat.openai.com/ 由OpenAI研发,2022年11月发布。基于 transformer 结构的大规模语言模型,包含1750亿参数。训练数据集主要是网页文本,聚焦于流畅的对话交互。对话风格友好,回复通顺灵活,富有创造性。存在一定的安全性问题,可…...
登录和注册页面 - 验证码功能的实现
目录 1. 生成验证码 2. 将本地验证码发布成 URL 3. 后端返回验证码的 URL 给前端 4. 前端将用户输入的验证码传给后端 5. 后端验证验证码 1. 生成验证码 使用hutool 工具生成验证码. 1.1 添加 hutool 验证码依赖 <!-- 验证码 --> <dependency><groupId…...
HDFS的文件块大小(重点)
HDFS 中的文件在物理上是分块存储 (Block ) , 块的大小可以通过配置参数( dfs.blocksize)来规定,默认大小在Hadoop2.x/3.x版本中是128M,1.x版本中是64M。 如果一个文件文件小于128M,该文件会占…...
深度学习(二)
目录 一、神经网络 整体架构: 架构细节: 神经元个数的影响: 神经网络过拟合解决: 卷积网络 整体架构: 卷积层 边缘填充 特征尺寸计算 池化层 特征图变化 递归神经网络 一、神经网络 整体架构: 图中分别为输入层、隐层1、隐层2、输出层 通过输入层输入某数值…...
无涯教程-jQuery - wrapInner( html )方法函数
wrapInner(html)方法使用HTML结构包装每个匹配元素(包括文本节点)的内部子内容。 wrapInner( html ) - 语法 selector.wrapInner( html ) 这是此方法使用的所有参数的描述- html - 将动态创建并环绕目标的HTML字符串。 wrapInner( html ) - 示例 以下是一个简单的示例…...
【unity之IMGUI实践】单例模式管理数据存储【二】
👨💻个人主页:元宇宙-秩沅 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 秩沅 原创 👨💻 收录于专栏:uni…...
【C++】开源:Linux端ALSA音频处理库
😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍Linux端ALSA音频处理库。 无专精则不能成,无涉猎则不能通。。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,…...
【Linux | Shell】结构化命令2 - test命令、方括号测试条件、case命令
目录 一、概述二、test 命令2.1 test 命令2.2 方括号测试条件2.3 test 命令和测试条件可以判断的 3 类条件2.3.1 数值比较2.3.2 字符串比较 三、复合条件测试四、if-then 的高级特性五、case 命令 一、概述 上篇文章介绍了 if 语句相关知识。但 if 语句只能执行命令,…...
基于单片机的语音识别智能垃圾桶垃圾分类的设计与实现
功能介绍 以51单片机作为主控系统;液晶显示当前信息和状态;通过语音识别模块对当前垃圾种类进行语音识别; 通过蜂鸣器进行声光报警提醒垃圾桶已满;采用舵机控制垃圾桶打开关闭;超声波检测当前垃圾桶满溢程度࿱…...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
