如何将HTML表单中显示的数值回传给Python Flask进行后续处理
实现方法
要把页面上展示的股票相关数据和用户输入的售价一起提交回Flask后端,关键是把这些展示的数值通过**隐藏输入框(hidden input)**嵌入表单中——因为普通文本(比如<p>标签里的内容)不会随表单提交,只有表单内的表单控件数据会被发送。
修改HTML表单
在你的<form>标签内部(必须在表单范围内),为每个需要回传的stks值添加一个隐藏输入字段,字段的value绑定对应的模板变量,同时设置明确的name属性方便后端识别:
<form method="POST"> <p> Stock to Sell : {{stks[0]}} </p> <!-- 添加隐藏字段回传股票名称 --> <input type="hidden" name="stock_name" value="{{stks[0]}}"> <p> Stock Bought for : {{stks[1]}} </p> <!-- 添加隐藏字段回传买入价 --> <input type="hidden" name="buy_price" value="{{stks[1]}}"> <p> Date of Purchase : {{stks[2]}} </p> <!-- 添加隐藏字段回传购买日期 --> <input type="hidden" name="purchase_date" value="{{stks[2]}}"> <p> Target Date : {{stks[3]}} </p> <!-- 添加隐藏字段回传目标日期 --> <input type="hidden" name="target_date" value="{{stks[3]}}"> <p> Stop Loss Price : {{stks[4]}} </p> <!-- 添加隐藏字段回传止损价 --> <input type="hidden" name="stop_loss_price" value="{{stks[4]}}"> <br> Enter the Sale Price : <input type="text" name="saleprice"> <input type="submit" name="submit-button" value="Add"> </form>
Flask后端接收数据
在处理表单提交的Flask视图函数中,通过request.form.get()方法获取所有提交的字段值(包括隐藏字段和用户输入的售价):
from flask import Flask, render_template, request app = Flask(__name__) # 渲染并处理表单的视图 @app.route('/sell-stock', methods=['GET', 'POST']) def sell_stock(): if request.method == 'POST': # 获取回传的隐藏字段值 stock_name = request.form.get('stock_name') buy_price = request.form.get('buy_price') purchase_date = request.form.get('purchase_date') target_date = request.form.get('target_date') stop_loss_price = request.form.get('stop_loss_price') # 获取用户输入的售价 sale_price = request.form.get('saleprice') # 这里写后续处理逻辑,比如存入数据库、计算收益等 print(f"提交数据:股票{stock_name},买入价{buy_price},售价{sale_price}") # 可返回确认页面或重定向 return "提交成功!" # GET请求时渲染表单,示例stks数据 stks = ["AAPL", "150.00", "2024-01-01", "2024-06-01", "140.00"] return render_template('sell_stock.html', stks=stks) if __name__ == '__main__': app.run(debug=True)
注意事项
- 确保所有隐藏输入字段都在
<form>标签内部,否则不会被提交。 - 后端获取字段时,
name属性要和HTML中设置的完全一致(比如stock_name对应name="stock_name")。 - 对于价格、日期这类数据,建议在后端进行类型转换(比如把
buy_price转成float,日期转成datetime对象),方便后续处理。 - 如果
stks数据来自数据库,更推荐回传股票的唯一ID(比如stock_id),而非直接传显示值——避免显示值被篡改或重复的问题,后端再通过ID查询完整数据。
内容的提问来源于stack exchange,提问作者rams
相关产品推荐
相关产品推荐

