Django视图报错UnboundLocalError:context变量未赋值无法访问
Django视图UnboundLocalError问题修复
错误原因
你的代码中context变量仅在else分支(GET请求场景)里定义,当请求为POST且表单验证失败时,代码会执行到最后的return语句,但此时context未被赋值,因此触发UnboundLocalError。
修复后的代码
def assign_item_view(request, pk): item = Item.objects.get(Serial_no=pk) if request.method == "POST": form = AssignmentForm(request.POST, instance=item) if form.is_valid(): form.save() return HttpResponseRedirect('/user') else: form = AssignmentForm(instance=item) # 将context定义移至条件分支外,确保所有路径都能获取到该变量 context = {"item": item,"form": form} return render(request, "workshop/Add_assignment.html", context)
关键修改说明
- 把
context的定义从else分支中移出,放在所有条件判断之后。这样无论处理GET请求,还是POST请求中表单验证失败的情况,context都会被正确赋值。 - 当POST请求表单验证失败时,
form会保留错误信息,传入模板后可以展示给用户,同时避免了变量未定义的错误。
内容的提问来源于stack exchange,提问作者CHALCHISA TAMIRU
相关产品推荐
相关产品推荐

