[Flask]各种子功能的实现

news2024/11/26 0:25:28

一、标准Flask架构搭建

        ①config.py

                新建一个文件config.py,在其中进行参数初始化,再使用下面代码加载到app.py(主程序)中

import config
app.config.from_object(config)      #由config.py初始化

        ②exts.py

                用于放置扩展模块(如数据库),可以防止循环引用

                                

                 db对象在app.py中进行绑定

from exts import db

db.init_app(app)

         ③blueprint

                将路由从app.py中分离出来,便于开发和维护(模块化)

                可以视为Flask的子模块Flask(__name__)

from flask import Blueprint

bp = Blueprint("auth",__name__,url_prefix="/auth")   #蓝图名,Flask识别标号,url前缀

#由蓝图创建路由
bp.route('/login')
def login():
    pass
from blueprints.qa import bp as qabp
from blueprints.auth import bp as authbp

#----蓝图绑定----#
app.register_blueprint(qabp)
app.register_blueprint(authbp)

二、模型的实现

         ①数据库连接的初始化

                在config.py中写入如下代码,完成配置

#----配置数据库连接参数----#
HostName=
Port =                      #默认为3306,需要自行修改
UserName=                 #默认用户名
Password=
DataBase=

SQLALCHEMY_DATABASE_URI = f"mysql+pymysql://{UserName}:{Password}@{HostName}:{Port}/{DataBase}?charset=utf8mb4"

        ②构建模型

class UserModel(db.Model):
    __tablename__="user"
    id = db.Column(db.Integer,primary_key=True,autoincrement=True) #主键
    username = db.Column(db.String(100),nullable=False)
    password = db.Column(db.String(100),nullable=False)
    eamil = db.Column(db.String(100),nullable=False)
    join_time = db.Column(db.DateTime,default=datetime.now,nullable=False)

        ③迁移到数据库中

                 在app.py中进行配置和操作

from models import UserModel
from flask_migrate import Migrate

migrate = Migrate(app,db)

        依次使用以下脚本

flask db init
flask db migrate
flask db upgrade

三、注册页面和登录页面的实现

        ①验证码发送

                需要安装flask-mail组件

pip install flask-mail

                然后要配置邮件服务商,这里以QQ邮箱为例

                在QQ邮箱中:设置-账户,找到POP3/SMTP服务,开启

                 开启后会生成一个授权码,注意保密

                随后在config.py中对邮箱进行配置

#----邮箱配置----#
MAIL_SERVER = 'smtp.qq.ccom'
MAIL_USE_SSL = True
MAIL_POST = 465
MAIL_USENAME = ''            #你的邮箱
MAIL_PASSWORD = ''           #授权码
MAIL_DEFAULT_SENDER = ''     #你的邮箱

                在exts.py中对邮箱对象构建

from flask_mail import Mail
mail = Mail()

                最后再app.py中进行初始化

from exts import mail

mail.init_app(app)

                进行邮件发送

from exts import mail
from flask_mail import Message

@bp.route("/mail/test")
def send_test():
    message = Message(
        subject='邮箱测试',
        recipients=['目标邮箱'],
        body='这是一条测试邮件')
    mail.send(message)
    return "邮件发送成功"

                生成验证码

source = string.digits*4
code = random.sample(source,4)  #结果为列表
codestr = "".join(code)         #第一个参数为连接符号,这里设置为空
print(codestr)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(二十四)Vue之props配置项

文章目录props基本使用props的数组形式props的对象形式检测类型检测类型 其他验证Vue学习目录 上一篇:(二十三)Vue之ref属性 props props 可以是数组或对象,用于让组件接收外部传过来的数据 约定props是只读的,Vue…

开源 高性能 云原生!时序数据库 TDengine 上线亚马逊Marketplace

近日,涛思数据旗下开源、高性能、云原生的时序数据库(Time Series Database,TSDB)TDengine 成功上线亚马逊云科技 Marketplace,为用户提供了更加丰富的订阅渠道。 TDengine 是针对时序数据特点研发和优化的数据库解决方…

CentOS8 Elasticsearch8.x 安装遇到的问题解决汇总

报错清单 启动报错:ERROR: Elasticsearch exited unexpectedly curl测试报错:curl: (52) Empty reply from server 报错解决 启动报错 起因 使用archive方式安装elasticsearch后,在目录中运行./bin/elasticsearch报错如下: 原…

第二十七章 数论——快速幂与逆元

第二十七章 快速幂与扩展欧几里德算法一、快速幂1、使用场景2、算法思路(1)二进制优化思想(2)模运算法则3、代码实现(1)问题(2)代码二、快速幂求逆元1、什么是逆元?&…

结构体位段问题

每一位勇敢努力的少年,必将不负众望! 什么是位段 位段的详细解释 位段其实也是一种结构体的类型 1.位段的成员是 int ,short int unsigned int , signed int , short , char 类型 2.位段的成员名后有一个冒号和一个数字 看一个例子: st…

通过静态LSP、LDP LSP、MPLS TE三种方式实现总部与分支的互通

一、静态LSP 特点:类似静态路由,简单易用,手动建立lsp,定制转发路径,无需控制报文,资源消耗少。 缺点:不适合大型复杂拓扑,不能根据网络变化而动态调整,需要管理员手动调…

【jprofiler应用-oom原因定位】

1.安装jprofiler jprofiler_windows-x64_11_0_2.exe 2.使用KeyGen.exe生成注册码然后输入 3.idea中安装jprofiler插件 File-->Setting-->Plugins 搜索jprofiler插件然后安装 4.以一个内存溢出的程序为例子进行分析(一直分配内存,List容器引用着Student导致…

医疗产品设计的新趋势

随着个人健康和医疗数据技术的发展,消费者可以选择更多的方法来跟踪和管理他们的健康状况,因此医疗产品开始转向更多的健康预防领域。医疗器械设计公司认为,随着医疗产品设计从医疗产品转向家庭,医疗产品的设计需要考虑更多的新问…

【HTML+CSS+JavaScript】实现简单网页版的飞机大战

文章目录【HTMLCSSJavaScript】实现简单网页版的飞机大战一. HTML部分代码二. CSS部分代码三. JavaScript部分代码四. 完整的代码和图片获取【HTMLCSSJavaScript】实现简单网页版的飞机大战 本文分享的是键盘版飞机大战的代码,且文章末尾有惊喜。 效果图&#xff1a…

前端食堂技术周刊第 64 期:Node.js 19、Interop 2022、SvelteKit 1.0、2022 Web 性能回顾、最流行的 Node.js

美味值:🌟🌟🌟🌟🌟 口味:冰糖雪梨 食堂技术周刊仓库地址:https://github.com/Geekhyt/weekly 本期摘要 Node.js 19 的新特性Interop 2022 年终更新SvelteKit 1.02022 Web 性能回…

Python爬虫学习第十二天---scrapy学习

Python爬虫学习第十二天—scrapy学习 一、scrapy的概念和流程 1、scrapy概念 Scrapy是一个Python编写的开源网络爬虫框架,它是一个被设计用于爬取网络数据、提取结构性数据的框架。Scrapy文档地址:http://scrapy-chs.readthedocs.io/zh_CN/1.0/intro/…

采用抓包的方式逆向获得谷歌翻译的API

文章目录最开始的尝试2022.12.26谷歌翻译API相关信息发送网址提交的数据不过不出意外的失败了实验去掉参数去掉Headers代码对返回结果进行解析完整代码最开始的尝试 谷歌的翻译API老是发生变化,我们需要自己动手来找到谷歌的翻译API,这样才是最稳妥的解决…

个人博客系统(前后端分离)

努力经营当下,直至未来明朗! 文章目录一、项目简介二、项目效果三、项目实现1. 软件开发的基本流程2. 博客系统 需求分析3. 博客系统 概要设计4. 创建maven项目5. 编写数据库操作的代码四、项目代码总结普通小孩也要热爱生活! 一、项目简介 …

Mac 音频转换器推荐 DRmare Audio Converter、Audi Free Auditor

Mac 音频转换器推荐 DRmare Audio Converter、Audi Free Auditor 给大家推荐两款 Mac 上的音频转换器,这两款转换器都可以转换苹果音乐,iTunes歌曲或者一些常规的音轨到MP3, FLAC, WAV, M4A, AAC格式等等,转换后我们就可以在所有的设备和播放…

stm32f407VET6 系统学习 day06 窗口看门狗, IIC 通信协议

1.独立看门狗,与窗口看门狗的差别 1. 差别1 : 窗口看门狗, 有上限 0x7F, 有下限 0x40 ,, 独立看门狗只有下限 0 2. 差别2: 时钟源不同, 独立看门狗:LSI 窗口…

【iMessage苹果推群发】苹果相册推它由pushchatkey.pem和pushchatcert.pem作为单独的文件使用

推荐内容IMESSGAE相关 作者推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者推荐内容3.日历推 *** 点击即可查看作者要求内容信息作者推荐…

cut与分层抽样

个人觉得, 把分层抽样称为“分类采样”会更贴切一些。通常最基本的采样手段是:随机抽样,但是在很多场景下,随机抽样是有问题的,举一个简单的例子:如果现在要发起一个啤酒品牌知名度的调查问卷,我…

Improved Unsupervised Lexical Simplification with Pretrained Encoders 论文精读

Improved Unsupervised Lexical Simplification with Pretrained Encoders 论文精读InformationAbstract1 Introduction2 System Description2.1 Simplification Candidate Generation2.2 Substitution Ranking2.3 Obtaining Equivalence Scores3 End-to-end System Performanc…

好书推荐《C++17 in Detail》

无意中发现作者的博客(https://www.cppstories.com/)和这本书。这本书算是对C17新增特性较为全面的介绍,而且从实战出发,不流于语法细枝末节,简洁清晰,可以作为Scott Meyers那本非著名的《Effective Modern…

2022环境电器年度行业分析报告:洗地机同比增长357%,扫地机器人销量197万+

在当前的大环境下,人们的消费观念不断变化,健康因素在购买决策中的比重逐渐增大,因此,与此挂钩的环境电器行业也迎来发展变化。 在这里,鲸参谋也综合了京东平台环境电器中一些重点类目的销售数据,主要包括吸…