新闻中心
如何在Flask中从HTML按钮获取变量值

本教程详细讲解了如何在flask应用中,通过html表单的post请求,安全有效地从按钮(或其他表单元素)获取动态变量值。我们将重点介绍html `
Flask 后端处理:接收与解析数据
在Flask应用中,我们需要创建一个路由来处理来自HTML表单的POST请求,并从中提取数据。
示例Flask代码 (app.py):
from flask import Flask, render_template, request, redirect, url_for, flash
app = Flask(__name__)
app.secret_key = 'super_secret_key' # 用于flash消息等,生产环境应更复杂
# 模拟发票数据
mock_invoices = [
{'invoice_no': 1001, 'amount': 150.00},
{'invoice_no': 1002, 'amount': 230.50},
{'invoice_no': 1003, 'amount': 75.20}
]
@app.route('/')
def index():
"""渲染显示发票列表的页面"""
return render_template('index.html', invoices=mock_invoices)
@app.route('/transactions', methods=['POST'])
def handle_transaction():
"""处理来自HTML表单的POST请求,获取发票号"""
# 检查请求方法是否为POST
if request.method == "POST":
# 使用 request.form.get() 安全地获取数据
# 'invoice_no' 对应于HTML按钮的 name 属性
invoice_number = request.form.get('invoice_no')
if invoice_number:
print(f"从按钮获取到的发票号是: {invoice_number}")
flash(f"已成功选择发票号: {invoice_number}", 'success')
# 可以在这里执行进一步的业务逻辑,例如查询数据库、更新状态等
# 示例:重定向回首页或显示详情页
return redirect(url_for('index'))
else:
flash("未接收到发票号。", 'danger')
return redirect(url_for('index'))
# 如果不是POST请求,理论上不会进入这里,但作为良好实践可以处理
flash("请求方法不正确。", 'danger')
return redirect(url_for('index'))
if __name__ == '__main__':
app.run(debug=True)
代码解释:
- @app.route('/transactions', methods=['POST']): 这个装饰器定义了一个路由,它只响应 POST 请求。如果收到 GET 请求,Flask会返回“Method Not Allowed”错误。
- if request.method == "POST":: 尽管路由已经指定了 methods=['POST'],但在视图函数内部再次检查 request.method 是一种良好的编程习惯,以确保代码逻辑只在正确的请求类型下执行。
-
invoice_number = request.form.get('invoice_no'): 这是从POST请求体中获取数据的关键。
- request.form 是一个字典状的对象,包含了所有通过POST请求提交的表单数据。键是HTML元素的 name 属性值,值是对应的 value 属性值。
- .get('invoice_no') 方法用于安全地获取键为 invoice_no 的值。如果该键不存在,它会返回 None,而不是抛出 KeyError,这使得代码更加健壮。
- print(f"从按钮获取到的发票号是: {invoice_number}"): 打印接收到的发票号,用于调试。在实际应用中,您会在这里调用业务逻辑层来处理这个发票号。
- flash() 和 redirect(): 用于提供用户反馈并重定向到其他页面,提升用户体验。
运行与测试
- 将上述Flask代码保存为 app.py。
- 在与 app.py 同级的目录下创建 templates 文件夹。
- 将上述HTML代码保存为 templates/index.html。
- 运行Flask应用:python app.py。
- 在浏览器中访问 http://127.0.0.1:5000/。
- 点击任意一个“选择发票”按钮。
- 查看Flask控制台输出,您将看到类似 从按钮获取到的发票号是: 1001 的信息。
注意事项
- 安全性: 永远不要直接信任来自客户端的数据。即使数据来自按钮的 value 属性,恶意用户也可以通过浏览器开发者工具修改这些值。在服务器端,务必对接收到的数据进行验证、清理和消毒,以防止SQL注入、XSS等安全漏洞。
- 表单验证: 对于更复杂的表单,建议使用Flask-WTF等扩展来简化表单的创建和验证过程。
- 用户体验: 提交表单后,应向用户提供明确的反馈(例如,成功消息、错误消息或重定向到相关页面),而不是仅仅打印到控制台。
- CSRF 保护: 对于所有处理用户提交数据的POST请求,尤其是在生产环境中,务必实施CSRF(跨站请求伪造)保护。Flask-WTF提供了方便的CSRFToken支持。
- HTTP 方法的语义: 遵循HTTP方法的语义。GET 用于获取资源,POST 用于提交数据创建/修改资源。不要混淆使用。
总结
通过本教程,我们详细了解了如何在Flask应用中从HTML按钮获取动态变量值。关键在于:
-
HTML
标签必须明确指定 method="post"。 这是将数据通过请求体发送到服务器的基础。 - HTML
- Flask 后端使用 request.form.get('name_attribute') 来安全地获取 POST 请求中提交的数据。
正确配置HTML和Flask后端是实现Web应用中数据交互的基础,理解 GET 和 POST 请求的区别及其在Flask中的处理方式至关重要。
以上就是如何在Flask中从HTML按钮获取变量值的详细内容,更多请关注其它相关文章!
# 剪辑推广营销视频
# 变量值
# 如何在
# 是一个
# 在这里
# 单选框
# 适用于
# seo伪文章推广
# 海城优化网站软件
# 发送到
# 松滋律师网站推广公司
# 东营网站建设技术公司
# 济南营销推广引流
# 毕节网站网站建设
# 海外如何建设网站
# 汉口抖音seo团队
# 罗湖万江网站建设
# css
# 这是
# 表单
# sql
# cdn
# 路由
# ai
# 后端
# 工具
# app
# 浏览器
# npm
# bootstrap
# js
# html
# python
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
AO3镜像入口大全 AO3网页版内容访问全集
铁路12306官网网页端快速入口 铁路12306官方首页登录教程
支付宝如何设置安全保护_支付宝安全设置的全面教程
谷歌推RCS信息存档功能:公司可监控员工私密信息!
Python Socket多播通信中指定源IP地址的实践指南
LINUX下如何进行磁盘分区_fdisk与parted工具在LINUX中的使用对比
Spyder启动失败:字体文件权限拒绝错误解决方案
AO3同人作品网入口 AO3搜索引擎官网永久地址
我的世界官方游戏入口 我的世界官网平台直达链接
PHP高效扁平化嵌套数组:使用array_merge与数组解包操作符
Golang如何通过reflect操作map_Golang reflect map操作与遍历技巧
Lar*el如何正确地在控制器和模型之间分配逻辑_Lar*el代码职责分离与架构建议
J*a递归快速排序中静态变量导致数据累积的陷阱与解决方案
葱吃多了会怎样 葱吃多了会伤胃吗
解决Flask中Quill编辑器内容提交失败及TypeError的指南
一加 Nord 5 隐私权限异常_一加 Nord 5 系统安全优化
漫蛙manwa2最新登录网址_漫蛙manwa2手机网页版入口
React列表渲染与独立状态管理:避免全局状态影响局部更新
C#使用XPath查询节点时出错? 常见语法错误与调试技巧
BetterDiscord插件中安全更新用户简介的实践指南
离线运行Go语言之旅:本地部署与GOPATH配置指南
使用CSS更改登录屏幕输入框中PNG图标颜色的策略与局限性
2025-2030年全球乘用车销量预测:新能源成增长主力
windows10怎么查看本机ip_windows10命令提示符ipconfig使用
正确连接J*aScript到HTML实现可点击图片与自定义事件处理
J*aScript实现单选按钮与关联输入框的联动禁用教程
Python实时数据流中的动态最值查找策略
利用5118提升短视频内容效果_5118短视频关键词优化方法
C++如何实现异步操作_C++11使用std::future和std::async进行异步编程
c++如何使用TBB库进行任务并行_c++ Intel线程构建模块
Linux如何构建多环境配置管理_Linux多环境配置方案
抖音商城签到领现金是真的吗_抖音商城签到奖励与提现说明
J*aScript教程:根据元素文本内容动态设置背景色
LINUX的I/O重定向是什么_深入理解LINUX中 >、>> 与 < 的区别
移动端XML文件怎么转换成Excel 手机和平板上的解决方案
QQ邮箱网页版入口 QQ邮箱官方邮箱登录通道
汽水音乐在线版入口_汽水音乐网页播放手册
sublime如何优雅地处理行尾空格_sublime自动清理多余空白字符配置
J*aScript中高效清空DOM列表元素:解决for循环中断与任务管理问题
必由学官网首页入口 必由学教师网页版登录指南
Lar*el Excel导入时生成自定义递增ID的策略与实践
迅雷下载到U盘速度很慢怎么办_迅雷U盘下载慢优化方法
Win10磁盘清理工具在哪 Win10打开并使用磁盘清理【教程】
中兴BladeV30怎样用测距估书架层高_iPhone中兴BladeV30测距估书架层高【家装参考】
Pyrogram与g4f集成:异步编程实践与常见错误解决
必由学官网入口 必由学教师登录入口
Win10自动更新怎么关闭 Win10永久关闭系统更新的两种方法【终极版】
一加Ace 6T支持全新明眸护眼:通过了最严苛的护眼小金标认证
Win11怎么设置鼠标主按键_Win11鼠标左右键功能互换
俄罗斯方块最新版入口 俄罗斯方块在线玩官网入口


2025-10-25
浏览次数:次
返回列表