You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 03:20:16