Flask实现Python与HTML变量传递故障排查求助
问题:Flask模板渲染失效,表单提交无响应
问题背景
想用Flask实现浏览器输入文本,后端处理后返回大写结果,但功能异常。
相关代码
main.py
from flask import Flask, request, render_template app = Flask(__name__) @app.route('/', methods=['GET', 'POST']) def index(): if request.method == 'POST': input_value = request.form['input'] result = input_value.upper() # 将输入转为大写 return render_template('index.html', result=result) return render_template('index.html') if __name__ == '__main__': app.run ()
templates/index.html
<!doctype html> <html> <head> <title>My Program</title> </head> <body> <h1>My Program</h1> <form method="post"> <label for="input">Enter some text:</label><br> <input type="text" id="input" name="input"><br> <button type="submit">Submit</button> </form> <br> <div id="output"> {% if result %} {{ result }} {% endif %} </div> </body> </html>
当前问题
- 页面直接显示模板代码
{% if result %} {{ result }} {% endif %},未被渲染 - 提交输入值后页面无响应,看不到大写结果
解决方案
1. 核对模板文件路径
必须保证index.html放在项目根目录下的templates文件夹内,正确目录结构如下:
项目根目录/ ├─ main.py └─ templates/ └─ index.html
如果templates文件夹位置错误,Flask找不到模板文件,会直接返回原始HTML文本,导致模板代码暴露。
2. 可选:手动指定模板目录(如果路径特殊)
如果你的模板文件夹不在默认位置,可在初始化Flask应用时手动指定:
app = Flask(__name__, template_folder='自定义模板路径')
一般保持默认templates文件夹即可满足需求。
3. 确认表单与后端的参数匹配
检查表单输入框的name属性和后端request.form['input']的键是否一致,你的代码里已经匹配(输入框name="input"),这部分无需修改。
4. 重启Flask服务
修改代码或模板后,重启main.py,确保最新代码生效。
验证效果
重启服务后访问http://127.0.0.1:5000:
- 页面不再显示模板代码
- 输入文本点击提交,下方会显示对应的大写结果
内容的提问来源于stack exchange,提问作者Daniel Xi
相关产品推荐
相关产品推荐

