本教程详细讲解了如何在flask应用中,通过html表单的post请求,安全有效地从按钮(或其他表单元素)获取动态变量值。我们将重点介绍html `
在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)
代码解释:
即使数据来自按钮的 value 属性,恶意用户也可以通过浏览器开发者工具修改这些值。在服务器端,务必对接收到的数据进行验证、清理和消毒,以防止SQL注入、XSS等安全漏洞。通过本教程,我们详细了解了如何在Flask应用中从HTML按钮获取动态变量值。关键在于:
正确配置HTML和Flask后端是实现Web应用中数据交互的基础,理解 GET 和 POST 请求的区别及其在Flask中的处理方式至关重要。