发送邮件和随机码的生成

类视图和方法视图区别:

  • 不需要装饰器,只需要继承MethodView,需要使用什么方式就写对应的方法名称,它就能自动匹配

    @app.route("/delete/",methods=["DELETE"])这些就不用写了

    但是不写装饰器并不意味着不写路由了,要在最底下编写路由

  • 方法视图要写四个接口,而类视图只需要写一个接口

class ManageApi(MethodView):def get(self):#self关键字 作用是类内部共享公共资源属性和方法的调用#设置个条件:根据用户主键id进行查询#接收参数useerid = request.args.get("id",None)_sql=text("select `email`,`password` from `user` where `id`={}".format(useerid))print(_sql)user = db.session.execute(_sql).fetchone()print(user)if user:return jsonify({"errcode":0,"data":{"email": user[0], "password": user[1]}})# return jsonify({"errcode":0,"data":dict(user)})else:return jsonify({"errcode":1,"msg":"用户不存在"})#匹配路由
app.add_url_rule("/",view_func=ManageApi.as_view("ManageApi"))

命令行显示:

查询数据库成功

 

测试文件运行结果:

(测试文件作为客户端接收到了来自后端项目入口文件的反馈)

验证用户合法性:

如果是方法视图的话就需要每个方法使用之前调用验证合法性的函数,麻烦

可以使用类的继承,新建BaseApi类,它继承的是来自flask框架中的MethodView类,在该类中定义了验证用户合法性的函数。然后新建ManageApi新类,它继承BaseApi类,该类中定义了处理Http请求的方法。

#父类 基础类(增删改查之前验证用户合法性)
class BaseApi(MethodView):def get_user(self):#只要有人需要该方法,不需调用,仅仅需要继承print("该用户合法")#类视图,接口
class ManageApi(BaseApi):def get(self):#self关键字 作用是类内部共享公共资源属性和方法的调用#设置个条件:根据用户主键id进行查询#调用父类的实例方法self.get_user()#接收参数useerid = request.args.get("id",None)......



 

用户注册功能中检测邮箱是否已经注册过:

 入库之后触发唯一索引,节省查询操作

右键点击user,为email添加唯一索引,然后运行,就会显示添加成功
添加唯一索引之后,注册中用户写入数据库的邮箱,在进行连接之前数据库会先检测是否与数据库中已有的邮箱重复,如果重复,拒绝连接。


注册流程图 draw.io


 

在“查询”中向user表中插入已经存在的值email字段的值和password字段的值

因为已经为email字段添加了唯一索引,所以当该条记录要插入字段中已经有的’3次邮箱‘值时,是会报错的,而password字段已经有了'3次数密码',但是其并没有设置唯一索引,单独作为一条插入记录是能插入进去的。但是由于email的唯一性约束使得整条记录插入失败。


 

 发送邮件:
邮件发送类(两个方法)

初始化方法:定义发送者邮箱,发送者密钥

发送方法:
构建邮件体:mimemultipart(),标题,发送者,接收者
邮件内容:mimetext()
建立连接对象:s=smtplib.SMTP_SSL('smtp.qq.com',465)

登陆邮箱:s.login(self._user,self._pwd)

发送邮件

关闭连接
 

#工具库,保存系统中所有用到的工具
#导包
import smtplib#导入文件文本包
from email.mime.text import MIMEText#导入邮件分类库
from email.mime.multipart import MIMEMultipart#邮件发送类
class SendEmail: #此不需要继承#初始化方法def __init__(self):#初始化邮箱数据#发送者的邮箱self._user='3052864873@qq.com'#发送密钥 授权码self._pwd = 'ylanafhvjjckdddc'#发送方法def send_mail(self,_touser,_title,_cotent):#往哪发,发送标题,具体内容#构建邮件体msg=MIMEMultipart()#邮件标题msg["Subject"] = _title#发件人msg["From"] = self._user#通过self关键字来获取初始化方法里的_user#收件人msg["To"] = _touser#邮件内容part = MIMEText("这是社交平台一封测试邮件","html","utf-8")msg.attach(part)#发送逻辑#建立链接对象(域名,端口号)s=smtplib.SMTP_SSL('smtp.qq.com',465)#http端口号是80,https端口号是443,smtp端口号是465#登录邮箱s.login(self._user,self._pwd)#发送邮件s.sendmail(self._user,_touser,msg.as_string())#关闭链接# s.quit()s.close()if __name__ == '__main__':#测试一律main入口,main入口只是在本地调用起作用,别人导入不会起执行。若是不写,别人导入之后立刻执行#实例化对象sm = SendEmail()#发送sm.send_mail('3451542714@qq.com','社交平台邮件标题','123456')#假设给自己发



 


生成随机码:

import random#随机码
def create_code(abc=True,length=4):#abc为true为字符串加数字,false为纯数字if abc:base_str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"else:base_str = "0123456789"#生成逻辑# code=""# for _ in range(length):#   mystr = random.choice(base_str)#   code+= mystrreturn "".join([random.choice(base_str)for _ in range(length)] )#_意味着什么也没有,节约内存空间if __name__ == '__main__':#测试一律main入口,main入口只是在本地调用起作用,别人导入不会起执行。若是不写,别人导入之后立刻执行#实例化对象# sm = SendEmail()#发送# sm.send_mail('3451542714@qq.com','社交平台邮件标题','123456')#假设给自己发print(create_code())#测试随机码生成

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/444483.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

毕设分享 大数据用户画像分析系统(源码分享)

文章目录 0 前言2 用户画像分析概述2.1 用户画像构建的相关技术2.2 标签体系2.3 标签优先级 3 实站 - 百货商场用户画像描述与价值分析3.1 数据格式3.2 数据预处理3.3 会员年龄构成3.4 订单占比 消费画像3.5 季度偏好画像3.6 会员用户画像与特征3.6.1 构建会员用户业务特征标签…

Python入门笔记(四)

文章目录 第九章 集合set9.1 创建集合:set()、集合生成式9.2 集合性质9.3 一些函数:issubset()、issuperset()、isdisjoint()9.4 集合增加元素:add()、update()9.5 集合删除元素:remove()、discard()、pop()、clear()9.6 创建不能…

[论文笔记]SGPT: GPT Sentence Embeddings for Semantic Search

引言 解码器Transformer的规模不断壮大,轻松达到千亿级参数。同时由于该规模,基于提示或微调在各种NLP任务上达到SOTA结果。但目前为止解码器Transformer还无法应用在语义搜索或语句嵌入上。 为了简单,下文中以翻译的口吻记录,比…

企业如何制定适合自己的专利布局策略

在竞争激烈的市场环境中,专利布局对于企业的发展和竞争优势的建立至关重要。以下将分要点解析企业如何制定适合自己的专利布局策略。 1、明确企业的发展战略和市场定位 企业首先需要深入了解自身的长期发展规划和短期业务目标。明确是要通过技术创新来开拓新市场&am…

DSP CMD文件使用

背景描述: 在CCS编译代码时出现如下警告 解决方法: 找到cmd文件(这里是用的系统自动生成的),在Section部分找到对应的核 #ifdef CORE7.text > CORE7_L2_SRAM.stack > CORE7_L2_SRAM.bss > CORE7_L2_SRAM.cio &g…

ARM base instruction -- umull

无符号乘法运算 Unsigned Multiply Long multiplies two 32-bit register values, and writes the result to the 64-bit destination register. 将两个32位寄存器值相乘&#xff0c;并将结果写入64位目标寄存器。 64-bit variant UMULL <Xd>, <Wn>, <Wm&g…

SQL第16课挑战题

1. 美国各州的缩写应始终用大写。更新所有美国地址&#xff0c;包括供应商状态&#xff08;Vendors表中的vend_state)和顾客状态&#xff08;customers表中的cust_state),使它们均为大写。 2. 第15课挑战题1要求将自己添加到customers表中&#xff0c;现在删除自己&#xff0c;…

AWS MySQL 升级(三)—— TAZ - 近0停机的小版本升级方案

与AWS交流了解到的新方案&#xff0c;没有实际试过&#xff0c;所以本篇主要是些原理 一、 TAZ的含义 TAZ实际上就是 3 AZ&#xff0c;扩展一些就是 Multi-AZ DB Cluster&#xff0c;即在3个可用区部署DB&#xff0c;具备两个只读备用实例。 二、 TAZ的主要用途 1. 近0停机的小…

Python和C++的差异在哪里

1.编程应用领域 C&#xff1a;广泛应用于系统级开发、嵌入式系统、游戏开发等领域。C的底层控制和高性能使其成为这些领域的理想选择。 Python&#xff1a;广泛应用于数据科学、Web开发、人工智能等领域。Python的简洁语法和强大库支持使其成为这些领域的首选语言。 2.语法风…

『网络游戏』制作提示弹窗UI【03】

将上一章的创建角色界面隐藏 创建一个空节点重命名为DynamicWnd 设置父物体为伸展 钉在中间创建一个Text文本组件 添加动画Animation组件 创建自定义动画Animation动画 点击创建 选择指定文件夹 拖拽至Animation 使用记录动画方式编辑动画首先点击红点录制 在第0帧设置文字透明…

文件夹访问被拒绝:深度解析、恢复策略与预防指南

一、文件夹访问被拒绝现象概述 在日常的电脑使用中&#xff0c;我们时常会遇到文件夹访问被拒绝的情况。这一现象通常表现为在尝试打开某个文件夹时&#xff0c;系统弹出权限不足的提示&#xff0c;阻止用户进行访问或操作。文件夹访问被拒绝不仅会影响用户的正常使用&#xf…

【YOLOv11】ultralytics最新作品yolov11 AND 模型的训练、推理、验证、导出 以及 使用

​目录 一 ultralytics公司的最新作品YOLOV11 1 yolov11的创新 2 安装YOLOv11 3 PYTHON Guide 二 训练 三 验证 四 推理 五 导出模型 六 使用 文档&#xff1a;https://docs.ultralytics.com/models/yolo11/ 代码链接&#xff1a;https://github.com/ultralytics/ult…

QT实现TCP通信

QT实现TCP通信案例 pro文件修改 QT core gui network 服务器端 widget.h代码 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> //服务器类 #include <QTcpSocket> //客户端类头文件 #include <QList> …

【Web】复现n00bzCTF2024 web题解(全)

目录 File Sharing Portal 方法一&#xff1a; 方法二&#xff1a; Focus-on-yourSELF Passwordless File Sharing Portal 附件的Dockerfile给了这么一段 # Add the cron job to the crontab RUN mkdir /etc/cron.custom RUN echo "*/5 * * * * root rm -rf /app…

uibot发送邮件:自动化邮件发送教程详解!

uibot发送邮件的操作指南&#xff1f;uibot发送邮件的两种方式&#xff1f; 在现代办公环境中&#xff0c;自动化流程的引入极大地提高了工作效率。uibot发送邮件功能成为了许多企业和个人实现邮件自动化发送的首选工具。AokSend将详细介绍如何使用uibot发送邮件。 uibot发送…

MyBatis 用法详解

文章目录 一、普通 SQL1.1 注解实现&#xff1a;1.1.1 参数传递&#xff1a;1.1.2 增&#xff08;Insert&#xff09;&#xff1a;1.1.3 删&#xff08;Delete&#xff09;&#xff1a;1.1.4 改&#xff08;Update&#xff09;&#xff1a;1.1.5 查&#xff08;Select&#xff…

贴吧软件怎么切换ip

在网络使用中&#xff0c;有时我们需要切换IP地址来满足特定的需求&#xff0c;比如需要切换贴吧软件IP以进行不同的操作。本文将介绍几种贴吧切换IP地址的方法&#xff0c;帮助用户更好地管理自己的网络身份和访问权限。 1、更换网络环境‌ 通过连接到不同的Wi-Fi网络或使用移…

微服务之间的相互调用的几种常见实现方式对比

目录 微服务之间的相互调用的几种实现方式 一、HTTP HTTP/RESTful API调用工作原理 二、RPC 设计理念与实现方式 协议与传输层 RPC远程调用工作原理 应用场景与性能考量 特点 三、Feign 设计理念与实现方式 协议与传输层 Feign调用的基本流程 Feign调用的工作原理…

钢铁行业3大改造方向 智能仪器亦起到重要作用!

钢铁企业新的改造方向主要包括超低排放改造、能效改造和数字化转型。‌这些政策旨在提升钢铁行业的环保水平、能效和智能化水平。其中智能仪器的加入&#xff0c;为钢铁企业数字化智能化自动化改造带来新的活力。 具体来说&#xff0c;到2027年&#xff0c;钢铁行业将实现以下目…

ubuntu-24.04.1 系统安装

使用VMware虚拟机上进行实现 官网下载地址&#xff1a; https://cn.ubuntu.com/download https://releases.ubuntu.com 操作系统手册&#xff1a; https://ubuntu.com/server/docs/ &#xff08;里面包含安装文档&#xff09; 安装指南&#xff08;详细&#xff09;&#xff1a…