如何在Flask中将变量传递至HTML的input输入框?
Flask 后端变量传递到input value属性的解决方案
问题根源
你通过redirect携带参数跳转至/application路由,但如果目标路由没有从URL参数中提取变量并传递给模板,模板里的{{ Class_Number }}就无法获取到值,导致input的value属性无法填充。
具体修复步骤
1. 修正Flask路由逻辑
需要在跳转的目标路由(/application)中,从请求参数里提取Class_Number,再将其传递给模板。示例代码如下:
from flask import Flask, redirect, url_for, request, render_template app = Flask(__name__) # 处理Class_Number验证的路由(示例) @app.route('/validate', methods=['POST']) def validate_class_number(): class_num = request.form.get('Class_Number', '') # 非数字时设置默认值 if not class_num.isdigit(): default_num = "20240001" # 使用url_for生成跳转链接,携带参数 return redirect(url_for('application', Class_Number=default_num)) # 合法值直接携带跳转 return redirect(url_for('application', Class_Number=class_num)) # 目标路由:接收参数并传递给模板 @app.route('/application') def application(): # 从URL参数中获取Class_Number,无值时设为空字符串 class_number = request.args.get('Class_Number', '') # 将变量传入模板 return render_template('application.html', Class_Number=class_number)
2. 修正HTML模板代码
确保input的value属性正确引用模板变量,注意变量名大小写要和路由传递的完全一致:
<label for="class-number">학번</label> <input type="text" id="class-number" name="Class_Number" value="{{ Class_Number }}">
3. 常见排查点
- 检查路由中调用
render_template时是否传递了Class_Number变量,这是最容易遗漏的步骤 - 确认跳转时的参数名(
Class_Number)和模板中使用的变量名完全一致(大小写敏感) - 如果是POST请求提交的数据,
redirect后会转为GET请求,必须从request.args而非request.form中获取参数 - 可在模板中添加调试代码:
<p>调试:{{ Class_Number }}</p>,验证变量是否成功传递
内容的提问来源于stack exchange,提问作者GodSoda
相关产品推荐
相关产品推荐

