【Flask开发实战】登录模块页面模板及渲染

1、规划蓝图目录

上一章节中讲述了蓝图的作用和使用示例,此章节通过登录模块的介绍,加深对蓝图使用理解。为了解决项目中不同代码的分开编写管理和重复使用问题,我们在flask项目中引入了蓝图使用。

在使用蓝图前,我们在项目主目录下创建blueprints目录,用于存放各类不同功能的py代码,如下例所示,auth.py主要解决登录验证模块、forms.py主要解决表格填写检验模块、fw.py主要解决防火墙查询功能模块。我们可以根据实际项目需要,划分创建不同的蓝图,然后绑定到主程序上运行。这从代码管理和维护的角度,也会方便很多。

[root@node1 blueprints]# tree
.
├── auth.py
├── forms.py
├── fw.py
└── __init__.py

2、创建登录蓝图

auth.py: 创建了一个auth的蓝图,url前缀是/auth,并且这个蓝图下定义了个login的路由和视图函数。在制定视图函数时,加了一个html方法的判断,如果GET方法,页面转到登录页面,如果是其他方法则转到/页面。

from flask import Blueprint, render_template, jsonify, redirect, url_for, session


# /auth
bp = Blueprint("auth", __name__, url_prefix="/auth")


@bp.route("/login", methods=['GET', 'POST'])
def login():
    if request.method == 'GET':
        return render_template("login.html")
    else:
        return redirect("/")

3、注册蓝图

主app.py

###导入蓝图

from blueprints.auth import bp as auth_bp

###蓝图关联
app.register_blueprint(auth_bp)

4、登录模块模板

这里是直接复用了之前用过的一个登录页面html

login.html

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>用户登录</title><style>body {background: url({{ url_for('static', filename='images/ocean-3605547_1280.jpg')}});background-size: 100% 130%;}#login_box {width: 20%;height: 400px;background-color: #00000060;margin: auto;margin-top: 10%;text-align: center;border-radius: 10px;padding: 50px 50px;}h2 {color: #ffffff90;margin-top: 5%;}#input-box {margin-top: 5%;}span {color: #fff;}input {border: 0;width: 60%;font-size: 15px;color: #fff;background: transparent;border-bottom: 2px solid #fff;padding: 5px 10px;outline: none;margin-top: 10px;}button {margin-top: 50px;width: 60%;height: 30px;border-radius: 10px;border: 0;color: #fff;text-align: center;line-height: 30px;font-size: 15px;background-image: linear-gradient(to right, #30cfd0, #330867);}#sign_up {margin-top: 45%;margin-left: 60%;}a {color: #b94648;}</style>
</head><body><div id="login_box"><h2>防火墙规则查询页面</h2><div class="row mt-4"><div class="col"></div><div class="col"><form action="#" method="POST"><div><label for="username" style="color: white">用户</label><input type="username" name="username" placeholder="请输入用户名"  id="username" ></div><div <label for="exampleInputPassword1" style="color: white">密码</label><input type="password" name="password" placeholder="请输入密码"  id="exampleInputPassword1"></div><div><button type="submit">立即登录</button></div></form></div><div class="col"></div>
</body>
</html>

5、效果展示

python app.py

访问http://127.0.0.1/auth/login

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

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

相关文章

无法定位程序输入点QTextStream

当您的应用在调试模式下运行正常&#xff0c;但在发布&#xff08;发布构建&#xff09;后出现错误时&#xff0c;可能涉及到以下几个常见的原因&#xff1a; 动态链接库问题&#xff1a;发布构建可能没有包含必要的动态链接库&#xff08;DLL&#xff09;&#xff0c;或者没有…

V23 中的新增功能:LEADTOOLS React Medical Web 查看器

LEADTOOLS (Lead Technology)由Moe Daher and Rich Little创建于1990年&#xff0c;其总部设在北卡罗来纳州夏洛特。LEAD的建立是为了使Daher先生在数码图象与压缩技术领域的发明面向市场。在过去超过30年的发展历程中&#xff0c;LEAD以其在全世界主要国家中占有的市场领导地位…

深入了解 Google Gemini:主要功能是什么以及我们为什么要使用它?

Google Gemini&#xff1a;AI新纪元的里程碑 Google Gemini 简介Google Gemini 代表了 AI 开发的一个重要里程碑&#xff0c;彰显了 Google 对推动 AI 技术的坚定承诺。它以其创新功能脱颖而出&#xff0c;重新定义了机器学习和 AI 中的可能性&#xff0c;标志着 AI 功能的新时…

小米汽车充电枪继电器信号

继电器型号&#xff1a; 参考链接 小米SU7&#xff0c;便捷充放电枪拆解 (qq.com)https://mp.weixin.qq.com/s?__bizMzU5ODA2NDg4OQ&mid2247486086&idx1&sn0dd4e7c9f7c72d10ea1c9f506faabfcc&chksmfe48a110c93f2806f6e000f6dc6b67569f6e504220bec14654ccce7d…

使用yolo识别模型对比两张图片并标记不同(2)

上篇文章有漏洞&#xff0c;在这里补充下&#xff0c;比如要识别第二张图相对于第一张图的违建是否拆除了 第一步旋转对其后&#xff0c;图片会有黑色的掩码&#xff0c;如果旋转角度大的话&#xff0c;没识别出来的框可能不是已经拆除了&#xff0c;而是因为黑色掩码遮挡&…

数据结构八:线性表之循环队列的设计

上篇博客&#xff0c;学习了栈&#xff0c;我们可以知道他也是一种线性表&#xff0c;遵从先进后出的原则&#xff0c;在本节&#xff0c;我们进一步学习另一种线性表—队列。就像饭堂里排队打饭的的队伍&#xff0c;作为一种先进先出的线性表&#xff0c;他又有哪些特别之处呢…

实力蝉联!新点软件连续三年稳居“软件行业应用领军企业”阵营

4月24日&#xff0c;由中国软件行业协会举办的第三届中国国际软件发展大会暨中国软件行业协会成立四十周年纪念活动在北京举行。 大会颁布了2023年度中国软件行业系列奖项&#xff0c;新点软件斩获“2023年软件行业应用领军企业” “中国软件诚信示范企业”两大奖项&#xff1…

(06)vite与ts的结合

文章目录 系列全集package.json在根目录创建 tsconfig.json 文件在根目录创建 vite.config.ts 文件index.html额外的类型声明 系列全集 &#xff08;01&#xff09;vite 从启动服务器开始 &#xff08;02&#xff09;vite环境变量配置 &#xff08;03&#xff09;vite 处理 c…

免费的单片机物联网MQTT平台选择

目的是多设备接入中控&#xff0c;平台只做转发。 选择巴法云&#xff1a;巴法科技&巴法云-巴法设备云-巴法物联网云平台 clientId是私钥uid&#xff1a; 多设备 clientId 填同一个 uid 都是可以的。平台应该是加了后缀区分。 支持自定义topic&#xff0c;操作简单&#x…

【酱浦菌-模拟仿真】python模拟仿真PN结伏安特性

PN结的伏安特性 PN结的伏安特性描述了PN结在外部电压作用下的电流-电压行为。这种特性通常包括正向偏置和反向偏置两种情况。 正向偏置 当外部电压的正极接到PN结的P型材料&#xff0c;负极接到N型材料时&#xff0c;称为正向偏置。在这种情况下&#xff0c;外加的正向电压会…

通义千问发布 Qwen1.5-110B 首款超 1000 亿参数模型

近日&#xff0c;通义千问发布了 Qwen1.5-110B 模型&#xff0c;这是 Qwen1.5 系列中的新成员&#xff0c;也是该系列中首个参数超过 1000 亿的模型。 该模型在基础模型评估中表现出色&#xff0c;可与 Meta-Llama3-70B 相媲美。在聊天模型评估&#xff08;包括 MT-Bench 和 A…

rabbitmq下载安装最新版本--并添加开机启动图文详解!!

一、简介 RabbitMQ是一个开源的遵循AMQP协议实现的消息中间件支持多种客户端语言,用于分布式系统中存储和转发消息, 这是 Release RabbitMQ 3.13.0 rabbitmq/rabbitmq-server GitHub 二、安装前准备 1、查看自己系统 确认操作系统版本兼容性 uname -a2、下载Erlang依赖包…