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

