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

Flask框架报UnboundLocalError: val变量赋值前引用问题修复求助

Flask UnboundLocalError 报错排查与修复方案

报错根因

该报错是变量val的作用域逻辑问题导致的:

  • 只有请求方法为POST时,代码才会进入if request.method == "POST"分支,此时才会定义val变量
  • 当请求是GET方法时,不会进入上述分支,val变量从未被定义,但最后执行return时直接将val作为参数传给了模板,因此触发「变量赋值前被引用」的报错

修复方案

你可以根据自己的业务需求选择以下任意一种方案:

方案1:提前给val设置默认值

在if判断前先初始化val,兼容GET请求的场景:

@app.route("/",methods = ["GET","POST"])
def hello():
    val = ""  # 可根据需求替换为其他默认值,比如None、默认提示文本等
    if request.method == "POST":
        text = request.form['txt']
        val  = m.predict_statement(text)
    return render_template("index.html",values = val)

提示:如果模板需要区分POST/GET的展示效果,默认值可以设置为"请输入内容后提交查询"这类提示文本,前端体验更好。

方案2:按请求类型分分支返回

如果GET请求时模板不需要用到values参数,可以分开写返回逻辑:

@app.route("/",methods = ["GET","POST"])
def hello():
    if request.method == "POST":
        text = request.form['txt']
        val  = m.predict_statement(text)
        return render_template("index.html",values = val)
    # GET请求单独返回,不需要传val参数
    return render_template("index.html")

内容的提问来源于stack exchange,提问作者aish 1352

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:54:01