Flask使用的正例和反例
Flask使用的正例和反例
文章目录
- Flask使用的正例和反例
- 一 , 使用注册异常
- 二 , 新增数据成功后要返回新增数据的id
- 三, 模型查询语句抽取成函数
- 四, 业务逻辑函数传递的参数不应该用字典类型,要传不同字段的参数,做拆分
一 , 使用注册异常
优点:一般web框架都有异常注册的功能,功能异常注册异常可以很好的将业务逻辑和框架结合起来
反例:
def search_model(params):"""查询模型"""search_key = params.get('search_key')page = params.get('page', 1)size = params.get('size', 10)if not all([search_key, page, size]):return "缺少参数" #错误点
正例:
def search_model(params):"""查询模型"""search_key = params.get('search_key')page = params.get('page', 1)size = params.get('size', 10)if not all([search_key, page, size]):raise TipResponse("缺少参数") #使用框架中异常注册的功能
二 , 新增数据成功后要返回新增数据的id
优点: 可以直观的通过返回的数据id,确认数据是否新增成功
反例:
def insert_dataset(params):"添加训练集"vertexes = params.get('vertexes')dataset_name = params.get('dataset_name')start_time = params.get('start_time')end_time = params.get('end_time')grid_size = params.get('grid_size')dataset = DatasetModel(vertexes=str(vertexes),dataset_name=dataset_name,grid_size=int(grid_size),area_type=area_type,target_num=target_num,point_num=len(target_points),start_time=datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S"),end_time=datetime.strptime(end_time, "%Y-%m-%d %H:%M:%S"),data_path='')session.add(dataset)session_commit() #新增数据完成后没有返回值
正例:
def insert_dataset(params):"添加训练集"vertexes = params.get('vertexes')dataset_name = params.get('dataset_name')start_time = params.get('start_time')end_time = params.get('end_time')grid_size = params.get('grid_size')dataset = DatasetModel(vertexes=str(vertexes),dataset_name=dataset_name,grid_size=int(grid_size),area_type=area_type,target_num=target_num,point_num=len(target_points),start_time=datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S"),end_time=datetime.strptime(end_time, "%Y-%m-%d %H:%M:%S"),data_path='')session.add(dataset)session_commit()return dataset.dataset_id #增加新增结果成功后返回值
三, 模型查询语句抽取成函数
优点: 方便各个模块之间的复用,或者更换数据库
反例:
def get_target_points(params):"""获取所有的目标的踪迹点"""target_id = params.get('target_id')target = TargetModel.query.get(target_id) #模型查询语句if not target:raise TipResponse('数据不存在')points = PointModel.query.filter(PointModel.target_id == target_id).all() #模型查询语句points_result = []for point in points:points_result.append([float(point.longitude), float(point.latitude)])return points_result
正例:
class TargetModel(BaseModel):@staticmethoddef get_by_id(_id: int):return TargetModel.query.filter_by(id=_id).first() #模型查询类,包含这个模型的不同功能查询语句
class PointModel(BaseModel):@staticmethoddef get_by_target_id(_id: int):return PointModel.query.filter_by(PointModel.target_id=_id).all() #模型查询类,包含这个模型的不同功能查询语句
def get_target_points(params):"""获取所有的目标的踪迹点"""target_id = params.get('target_id')target = TargetModel.get_by_id(target_id) #模型查询语句if not target:raise TipResponse('数据不存在')points = PointModel.get_by_target_id(target_id) #模型查询语句points_result = []for point in points:points_result.append([float(point.longitude), float(point.latitude)])return points_result
四, 业务逻辑函数传递的参数不应该用字典类型,要传不同字段的参数,做拆分
优点: 方便查看参数的类型,传递的参数的个数
反例:
class DocListHandler(BaseHandler):'''文档列表相关操作'''def delete(self):params = self.paramsdelete_docs(params) #传递的是字典,看不出里面有多少参数,参数的类型return Response()
def delete_docs(params):"删除文档"doc_ids = params.get('doc_ids')
正例:
class DocListHandler(BaseHandler):'''文档列表相关操作'''def delete(self):params = self.paramsdoc_ids = params.get('doc_ids')delete_docs(doc_ids) #传递参数return Response()
def delete_docs(doc_ids):pass
相关文章:
Flask使用的正例和反例
Flask使用的正例和反例 文章目录 Flask使用的正例和反例一 , 使用注册异常二 , 新增数据成功后要返回新增数据的id三, 模型查询语句抽取成函数四, 业务逻辑函数传递的参数不应该用字典类型,要传不同字段的参数…...

2024年河北省职业院校技能大赛云计算应用赛项赛题第2套(私有云)
#需要资源(软件包及镜像)或有问题的,可私聊博主!!! #需要资源(软件包及镜像)或有问题的,可私聊博主!!! #需要资源(软件包…...

我的软件架构师——Java 职位面试经历。
最近,我参加了一家领先的服务型公司的软件架构师(Java)职位的面试。我在这里分享了一些面试官问我的问题。我只列出了与 Java 相关的问题,因为本文主要关注 Java。面试官问我有关 AWS、Docker、Kubernetes、Kafka、Elastic Search、SQL/NoSQL 和设计模式的问题。 ClassNotF…...

npm error code ETIMEDOUT
参考:https://blog.csdn.net/qq_38572963/article/details/142052986 二、解决办法 1、清空缓存 npm cache clean --force 2、查看当前的npm镜像设置 npm config get registry 3、切换新镜像源 npm config set registry https://registry.npmmirror.com 4、查看新源是否设置成功…...

(11)(3.2) ESC信号问题
文章目录 前言 1 信号电平不足 2 感应噪声 3 ESC过电压尖峰 4 ESC固件错误 前言 本页讨论了 ESC 信号的几个潜在问题,这些问题可能导致不可靠的操作,甚至在起飞时坠毁。这些主要发生在较大的四轮飞机上,这些飞机从动力和自动驾驶仪到 E…...
Postman最新接口自动化持续集成
学习地址:https://www.bilibili.com/video/BV1VDC5Y7EJA?spm_id_from333.788.videopod.episodes&vd_source336a0b0a2ff09832b3a55c3599ffb193&p9 1、旧版:PostmanNewmanAllureJenkins 缺点:需要安装较多软件,脚步需要手…...

windows nacos安装配置
GitHub下载压缩包 解压目录(注意不要用中文路径) 在mysql先创建数据库nacos,再执行sql脚本 配置数据库 #*************** Config Module Related Configurations ***************# ### If use MySQL as datasource: ### Deprecated conf…...
重温设计模式-外观模式和适配器模式的异同
文章目录 目的不同适配器模式:外观模式: 结构和实现方式不同适配器模式:外观模式: 对客户端的影响不同适配器模式:外观模式: 目的不同 适配器模式: 主要目的是解决两个接口不兼容的问题&#…...

数据中台从centos升级为国产操作系统后,资源增加字段时,提交报500错误
文章目录 背景一、步骤1.分析阶段2.查看nginx3.修改用户(也可以修改所有者权限) 背景 故障报错: nginx报错信息: 2024/12/19 15:25:31 [crit, 500299#0: *249 onen0 " /var/lib/nginx/tmp/cient body/0000000001" f…...
云原生后端开发(一)
云原生后端开发 云原生(Cloud-Native)是指一种构建和运行应用程序的方式,它充分利用了云计算的特点,比如弹性伸缩、自动化部署、容器化等。在云原生的架构下,后端应用通常具备高度可扩展、可维护、易于自动化管理的特…...

实现用户登录系统的前后端开发
**一、**实验名称 实现用户登录系统的前后端开发。 **二、**参考资料 Web开发技术第一章课件。 **三、**实验目的 1.练习前端基本技术的使用。 2.练习使用Servlet/JSP开发简单后端程序。 3.练习使用Tomcat发布Web应用。 4.练习使用Spring Boot开发简单的后端程序。 **…...

双刃剑下的机遇与风险:交易中的杠杆效应
做外汇交易的人都会不可避免地需要考虑交易的杠杆大小。在这个市场中,杠杆效应作为一种关键的金融工具,不仅为投资者提供了放大收益的机会,同时也带来了更高的风险。今天,EagleTrader想与广大交易员一起深入探讨这个不可或缺的要素…...
伏羲0.13(文生图)
确保伏羲0.12(文生图)注释和GUI显示均为中文,项目文件夹名称为中文,并提供使用说明。此外,我将完善风格迁移的确定及训练函数和代码。以下是完整的Python文件和相关说明。 项目结构 文本生成多模态项目/ ├── conf…...

深度学习blog-卷积神经网络(CNN)
卷积神经网络(Convolutional Neural Network,CNN)是一种广泛应用于计算机视觉领域,如图像分类、目标检测和图像分割等任务中的深度学习模型。 1. 结构 卷积神经网络一般由以下几个主要层组成: 输入层:接收…...

深度学习中的残差网络、加权残差连接(WRC)与跨阶段部分连接(CSP)详解
随着深度学习技术的不断发展,神经网络架构变得越来越复杂,而这些复杂网络在训练时常常遇到梯度消失、梯度爆炸以及计算效率低等问题。为了克服这些问题,研究者们提出了多种网络架构,包括 残差网络(ResNet)、…...
在Nginx部署Web应用,如何保障后端API的安全
1. 使用HTTPS和http2.0 参考:Nginx配置HTTP2.0_nginx 支持 2.0-CSDN博客 2. 设置严格的CORS策略 通过add_header指令设置CORS头。 只允许来自https://frontend.yourdomain.com的请求访问API location /api/ {if ($http_origin ~* (https://frontend\.yourdomai…...

arm架构 uos操作系统离线安装k8s
目录 操作系统信息 安装文件准备 主机准备 主机配置 配置hosts(所有节点) 关闭防火墙、selinux、swap、dnsmasq(所有节点) 系统参数设置(所有节点) 配置ipvs功能(所有节点) 安装docker(所有节点) 卸载老版本 安装docke…...

OpenCV-Python实战(1)——图像or视频文件处理
1、安装依赖库 pip install opencv-python # 主模块包pip install opencv-contrib-python # 主模块附加模块pip install numpy # numpy 库 2、图像的读取、显示、保存 读取:cv2.imread() img cv2.imread(path, flag) img: cv2.imread()函数返回值&#x…...

Flink SQL Cookbook on Zeppelin 部署使用
简介:对于初学者来说,学习 Flink 可能不是一件容易的事情。看文档是一种学习,更重要的是实践起来。但对于一个初学者来说要把一个 Flink SQL 跑起来还真不容易,要搭各种环境,真心累。很幸运的是,Flink 生态…...

【hackmyvm】DC04靶机wp
created: 2024-12-04 23:08 tags: HMV黄金票据PTTntlm中毒 难度: ⭐️⭐️⭐️⭐️⭐️ 作者: josemlwdf 系统: Windows 1. 基本信息^toc 文章目录 1. 基本信息^toc2. 信息收集2.1. 端口扫描2.2. 目录扫描2.3. 网址利用 3. websvc用户3.1. NTLM中毒攻击3.2. smb探测 4. rtina9…...

Spring @Value注解的依赖注入实现原理
Spring Value注解的依赖注入实现原理 一,什么是Value注解的依赖注入二,实现原理三,代码实现1. 定义 Value 注解2. 实现 InstantiationAwareBeanPostProcessor3. 实现 AutowiredAnnotationBeanPostProcessor4. 占位符解析逻辑5. 定义 StringVa…...

关于easyx头文件
一、窗口创建 (1)几种创建方式 #include<easyx.h>//easyx的头文件 #include<iostream> using namespace std;int main() {//创建一个500*500的窗口//参数为:长度,宽度,是否显示黑框(无参为不…...

【C++高级主题】多重继承下的类作用域
目录 一、类作用域与名字查找规则:理解二义性的根源 1.1 类作用域的基本概念 1.2 单继承的名字查找流程 1.3 多重继承的名字查找特殊性 1.4 关键规则:“最近” 作用域优先,但多重继承无 “最近” 二、多重继承二义性的典型类型与代码示…...

破局与进阶:ueBIM 在国产 BIM 赛道的差距认知与创新实践
作为国产BIM领域的探索者,斯维尔ueBIM自诞生以来始终以追赶国际头部技术为目标,但不可否认的是,在核心功能覆盖、行业生态成熟度以及全球市场占有率等方面,我们与Autodesk Revit、Bentley Systems等国际巨头仍存在显著差距。这种差…...
Vue-Cropper:全面掌握图片裁剪组件
Vue-Cropper 完全学习指南:Vue图片裁剪组件 🎯 什么是 Vue-Cropper? Vue-Cropper 是一个简单易用的Vue图片裁剪组件,支持Vue2和Vue3。它提供了丰富的配置选项和回调方法,可以满足各种图片裁剪需求。 🌟 …...

《云原生安全攻防》-- K8s网络策略:通过NetworkPolicy实现微隔离
默认情况下,K8s集群的网络是没有任何限制的,所有的Pod之间都可以相互访问。这就意味着,一旦攻击者入侵了某个Pod,就能够访问到集群中任意Pod,存在比较大的安全风险。 在本节课程中,我们将详细介绍如何通过N…...

SpringBoot整合Flowable【08】- 前后端如何交互
引子 在第02篇中,我通过 Flowable-UI 绘制了一个简单的绩效流程,并在后续章节中基于这个流程演示了 Flowable 的各种API调用。然而,在实际业务场景中,如果要求前端将用户绘制的流程文件发送给后端再进行解析处理,这种…...
多国金融市场数据对接指南(印度、印尼、韩国)
一、StockTV多国数据对接概述 StockTV提供统一的API接口规范对接全球金融市场数据,本文重点介绍印度(国家ID:14)、印尼(国家ID:42)、韩国(国家ID:xx)的股票市场对接方案。 共同特性 统一认证…...

BayesFlow:基于神经网络的摊销贝叶斯推断框架
贝叶斯推断为不确定性条件下的推理、复杂系统建模以及基于观测数据的预测提供了严谨且功能强大的理论框架。尽管贝叶斯建模在理论上具有优雅性,但在实际应用中经常面临显著的计算挑战:后验分布通常缺乏解析解,模型验证和比较需要进行重复的推…...

本地部署 DeepSeek R1(最新)【从下载、安装、使用和调用一条龙服务】
文章目录 一、安装 Ollama1.1 下载1.2 安装 二、下载 DeepSeek 模型三、使用 DeepSeek3.1 在命令行环境中使用3.2 在第三方软件中使用 一、安装 Ollama 1.1 下载 官方网址:Ollama 官网下载很慢,甚至出现了下载完显示 无法下载,需要授权 目…...