Python Flask中如何获取表单提交的输入文本作为变量使用
Flask获取表单提交的手机号参数实现方法
直接通过Flask内置的request对象就能拿到表单提交的参数,不需要额外安装依赖,按下面步骤修改即可:
核心逻辑说明
你当前表单用的是GET方法提交,提交后表单字段会拼接到URL的查询参数部分,在视图函数里通过request.args.get('字段名')就能获取对应的值,取到的结果直接是字符串类型,可以在后端代码里直接调用。
修改后的完整后端代码
from flask import Flask, request, render_template app = Flask(__name__) @app.route('/') def home(): # 提取前端提交的手机号参数,未提交时默认返回None phone_number = request.args.get('phone_number') if phone_number is not None: # 此处可直接使用phone_number变量编写业务逻辑,例如格式校验、入库、调用内部接口等 print(f"后端接收到手机号:{phone_number}") # 示例:将手机号传回前端展示 return render_template('index.html', input_phone=phone_number) # 普通访问页面时,直接渲染表单 return render_template('index.html') if __name__ == '__main__': app.run(debug=True, port=8000)
前端可选优化(展示提交结果)
如果需要在页面上提示用户提交状态,可以在index.html的表单下方加一段模板渲染逻辑,同时优化手机号输入框的类型:
<form method="GET"> <p>Phone number:</p> <input name="phone_number" type="tel"> <br><br> <input type="submit"> </form> <!-- 新增提交结果展示 --> {% if input_phone %} <p>* 提交成功,你输入的手机号是:{{ input_phone }}</p> {% endif %}
注意:手机号输入框建议把原来的
type="number"改成type="tel",数字类型输入框会自动截断开头的0,且长数字存在精度丢失风险,不符合手机号输入的场景需求。
扩展:如果改用POST提交表单
如果不想把手机号暴露在URL里,可以把表单提交方式改成POST,只需要同步修改两处:
- 表单标签修改为
<form method="POST"> - 后端路由装饰器添加methods参数,同时把取参数的方法换成
request.form.get:
@app.route('/', methods=['GET', 'POST']) def home(): if request.method == 'POST': phone_number = request.form.get('phone_number') # 后续业务逻辑和GET场景完全一致
常见踩坑提示
- 取参数的key必须和前端input标签的
name属性值完全一致,拼写、大小写错误都会导致拿到空值 request对象只能在视图函数内部(即请求上下文里)访问,不要在路由外全局调用- 拿到的手机号默认是字符串类型,不需要额外做类型转换即可直接使用
内容的提问来源于stack exchange,提问作者Sour
相关产品推荐
相关产品推荐

