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

Python 如何封装工具类方法,以及使用md5加密

第一步:封装使用方法

在utils目录中,编写我的md5加密的方法,如下:

import re
import hashlib
from os import path
from typing import Callable
from flask import current_app# 这里封装的是工具类的方法def basename(filename: str):name, ext = path.splitext(filename)return name.rstrip(ext)def md5(x: str) -> str:h1 = hashlib.md5() #创建一个md5对象h1.update(x.encode(encoding='utf-8')) # 使用utf-8编码数据return h1.hexdigest()  # 返回加密后的十六进制字符串upper: Callable[[str], str] = lambda x: x.upper()# 去除html标签
def filter_html_tag(html):pattern = re.compile('<[^>]+>', re.IGNORECASE)from typing import Matchdef repl_func(match: Match[str]) -> str:if match.group(0).startswith('<img'):return match.group(0)elif match.group(0).startswith('<br'):return match.group(0)else:return ''result = pattern.sub(repl_func, html)result = result.replace('&nbsp;', '') \.replace('&lt;', '') \.replace('\n', '<br/>')return result.strip()# 封建医脉通常用的生成token的方法
def api_sign(user_id:str, project_id:str):import timetimestamp = int(time.time()) #当前时间戳api_key = current_app.config.get('API_KEY') # 从配置文件获取keystr_to_sign = "project_id{}timestamp{}user_id{}".format(project_id, timestamp, user_id)token = upper(md5(md5(str_to_sign) + api_key))return token, timestamp

第二步:使用方法

from project.utils import api_signblog_base_blueprint = Blueprint('blog', __name__, url_prefix='/api')@blog_base_blueprint.route('/token', methods=['POST'])
def postToken():user_id = request.form.get('user_id')project_id = request.form.get('project_id')current_app.logger.info('生成token哟')(token, timestamp) = api_sign(user_id, project_id)return jsonify({'code': 1,'msg': '成功','data': {'token' : token,'timestamp' : timestamp}})

顺带截图分享一下我的目录结构:
在这里插入图片描述

相关文章:

Python 如何封装工具类方法,以及使用md5加密

第一步&#xff1a;封装使用方法 在utils目录中&#xff0c;编写我的md5加密的方法&#xff0c;如下&#xff1a; import re import hashlib from os import path from typing import Callable from flask import current_app# 这里封装的是工具类的方法def basename(filenam…...

网络编程的应用

目录 1.单机程序和网络程序 2.客户端与服务端 3.网络编程三要素 3.1 IP地址 3.2 port端口 4.TCP编程 5.UDP编程 1.单机程序和网络程序 之前编写的程序都是单机程序&#xff0c;所有的业务功能实现及数据存储都在一个主机上完成&#xff0c;我们称为单机程序 我们在生活…...

佰朔资本:国内海风加速招标 船舶行业景气上行

昨日&#xff0c;沪指盘中一度下探失守2700点&#xff0c;尾盘在地产、银行等板块的带动下发力上扬&#xff0c;深证成指亦翻红。到收盘&#xff0c;沪指涨0.49%报2717.28点&#xff0c;深证成指涨0.11%报7992.25点&#xff0c;创业板指跌0.11%报1533.47点&#xff0c;上证50指…...

理解AAC和Opus的编码与解码流程

理解AAC和Opus的编码与解码流程及其在Android中的实现,对于音频开发非常重要。下面,我将详细解释这两种编码格式的原理、流程,并结合具体代码示例,帮助你在Android项目中合理地设计和使用它们。 一、AAC(Advanced Audio Coding) 1. AAC的原理与流程 AAC是一种有损音频压…...

设计图纸加密方法知多少?小编给你讲清楚

一、对称加密 使用对称加密算法&#xff0c;对设计图纸进行加密。对称加密使用相同的密钥进行加密和解密&#xff0c;确保只有持有正确密钥的人能够解密文件。 二、非对称加密 使用非对称加密算法&#xff0c;进行设计图纸的加密。非对称加密使用公钥加密、私钥解密的方式&a…...

pycv实时目标检测快速实现

使用python_cv实现目标实时检测 python 安装依赖核心代码快速使用实现结果展示enjoy python 安装依赖 opencv_python4.7.0.72 pandas1.5.3 tensorflow2.11.0 tensorflow_hub0.13.0 tensorflow_intel2.11.0 numpy1.23.5核心代码快速使用 # 使用了TensorFlow Hub和OpenCV库来实…...

记录下如何让字体在div内 自动换行 上下居中

div内样式 display: flex; // flex布局 justify-content: center; // 上下居中 align-items: center; // 左右居中 overflow-wrap: break-word; // 允许字体换行 &#xff08;若行内的单词无法放下则换行&#xff09; word-break: break-all; // 强制文本在任意字符间进…...

Shell篇之编写MySQL启动脚本

Shell篇之编写MySQL启动脚本 1. 脚本内容 vim mysql_ctl.sh#!/bin/bashmysql_port3306 mysql_username"root" mysql_password"molinker" mysql_conf"/opt/lanmp/mysql/etc/my.cnf" mysql_sock"/opt/lanmp/mysql/var/mysql.sock"func…...

supermap Iclient3d for cesium加载地形并夸大地形

先看效果图 这是没有夸张之前的都江堰 这是夸大五倍后的都江堰 下面展示代码 主要就是加载supermaponline的skt地形然后夸大 <template><div class"PartOneBox"><div id"cesiumContainer"></div></div> </template>…...

一文解读OLAP的工具和应用软件

OLAP&#xff08;OnlineAnalyticalProcessing&#xff09;是一种用于快速分析大规模、多维度数据的方法。OLAP工具和应用软件则是帮助人们进行OLAP分析的重要工具。本文将介绍几种常见的OLAP工具和应用软件&#xff0c;并探讨它们在数据分析中的作用。 一 OLAP工具的分类 在选…...

xml重点笔记(尚学堂 3h)

XML:可扩展标记语言 主要内容(了解即可) 1.XML介绍 2.DTD 3.XSD 4.DOM解析 6.SAX解析 学习目标 一. XML介绍 1.简介 XML(Extensible Markup Language) 可扩展标记语言&#xff0c;严格区分大小写 2.XML和HTML XML是用来传输和存储数据的。 XML多用在框架的配置文件…...

爬虫代理API的全面解析:让数据抓取更高效

在大数据时代&#xff0c;网络爬虫已经成为收集和分析数据的重要工具。然而&#xff0c;频繁的请求会导致IP被封禁&#xff0c;这时候爬虫代理API就显得尤为重要。本文将详细介绍爬虫代理API的作用、优势及如何使用&#xff0c;帮助你更高效地进行数据抓取。 什么是爬虫代理AP…...

PCL 点云中的植被信息提取(C++详细过程版)

目录 一、算法原理1、原理概述2、参考文献二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接,首发于:2024年9月18日。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的抄袭狗。 一、算法原理 1、原理概述 点云具有丰富的色彩信息,可以与植被指数结合使…...

requests-html的具体使用方法有哪些?

‌requests-html是一个功能强大的Python库&#xff0c;用于发送HTTP请求和解析HTML内容。它的使用方法包括安装库、基本使用、发送带有参数的请求、图片抓取实战案例、解析网页内容、执行JavaScript代码、使用CSS选择器来查找元素、继续跟踪链接并获取内容等。‌ ‌安装request…...

YOLOv9改进策略【卷积层】| AKConv: 具有任意采样形状和任意参数数量的卷积核

一、本文介绍 本文记录的是利用AKConv优化YOLOv9的目标检测网络模型。标准卷积操作的卷积运算局限于局部窗口&#xff0c;无法捕获其他位置的信息&#xff0c;且采样形状固定&#xff0c;无法适应不同数据集和位置中目标形状的变化。而AKConv旨在为卷积核提供任意数量的参数和…...

图神经网络池化方法

图神经网络池化方法 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 图神经网络池化方法前言一、扁平图池化二、分层图池化1.节点聚类池化2.节点丢弃池化 参考文献 前言 图池化操作根据其池化策略的差异&#xff…...

小琳AI课堂:确保大语言模型安全的八大策略--从数据隐私到用户教育

大家好&#xff0c;这里是小琳AI课堂。今天我们深入探讨如何保证大语言模型的安全&#xff0c;这可是关系到我们每个人哦&#xff01;&#x1f510; 首先&#xff0c;我们要明白&#xff0c;保证大语言模型的安全&#xff0c;需要从多个方面入手&#xff0c;确保模型在技术、法…...

Python 数学建模——高斯核密度估计

文章目录 前言原理代码实例scipy 实现seaborn 实现 前言 高斯核密度估计本是一种机器学习算法&#xff0c;在数学建模中也可以发挥作用。本文主要讨论用它来拟合变量的概率密度&#xff0c;获得概率密度函数 f ( x ) f(x) f(x)。 原理 已知一个连续型随机变量 X X X 的一系列…...

Flink+Spark相关记录

FlinkSpark相关记录 FlinkSQL Flink Streaming的一些点覆写RichSource、RichSink、RichMap 1.Source自动负载均衡&#xff0c;CDC源端加入一个全局调控的节点监控流量流速 2.Sink并发写入 3.Map与Iterator与增量迭代等用法关于Checkpoint几个用法 1.提交Commit至目的端数据库 2…...

2023 hnust 湖科大 毕业实习 报告+实习鉴定表

2023 hnust 湖科大 毕业实习 报告实习鉴定表 岗位 IT公司机房运维 实习报告 实习鉴定表 常见疑问 hnust 湖科大 毕业实习常见问题30问&#xff08;2021 年7月&#xff0c;V0.9&#xff09;-CSDN博客时间&#xff1a;大四开学第三四周毕业实习23年是企业&#xff08;黑马&am…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...