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

Django表单报错:context未定义引用及同页展示结果问题排查

问题原因及修复方案

你遇到的local variable 'context' referenced before assignment错误,核心是Python语法使用错误:在POST请求的处理分支里,你给context用了冒号:而非等号=来赋值,这导致context变量根本没有被正确创建,后续调用它时Python自然会报错说“变量未定义就被引用”。

修正后的views.py代码

def index(request):
    template = 'predictor/index.html'
    if request.method == 'POST':
        form = EvalForm(request.POST)
        if form.is_valid():
            text = 'thank you for submitting form'
        else:
            text = 'something wrong.'
        # 把冒号改成等号,完成正确的变量赋值
        context = {
            'text': text,
            'form': form,  # 建议传入form,方便后续回显表单错误信息
        }
        return render(request, template, context)
    else:
        form = EvalForm()
        # GET请求时也传入context,避免模板中{{ text }}无值导致的空白异常
        context = {
            'form': form,
            'text': '',
        }
        return render(request, template, context)

额外优化说明

  1. 语法规范:Python里变量赋值必须用=,冒号:仅用于定义代码块(比如if/else分支、函数体、字典键值对结构),不能用来给变量赋值。
  2. GET请求的context补充:原来的GET分支没有传递context,虽然你手动写了表单,但把form传入context后,后续如果需要用Django表单的自动渲染、错误提示功能会更方便;给text设为空字符串,页面初始加载时result区域也不会显示异常。
  3. 错误体验提升:把form传入POST分支的context后,你可以在模板里通过{{ form.errors }}显示表单验证的具体错误,让用户清楚知道哪里填错了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:16:08