当前位置: 首页 > news >正文

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三, 模型查询语句抽取成函数四, 业务逻辑函数传递的参数不应该用字典类型,要传不同字段的参数&#xf…...

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…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言:多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...