[英]UnboundLocalError at / local variable 'context' referenced before assignment
[英]UnboundLocalError local variable 'context' referenced before assignment
我在保存几乎相同类型的表单时遇到此错误(分配前引用了 UnboundLocalError 局部变量 'context'),其他工作正常,但这个不是并且显示错误
def clutchDetail(request):
clutchDetail = ClutchDetail.objects.all()
context = {'title': 'Clutch Detail',
'active': 'active',
'clutchDetail': clutchDetail,
}
return render(request, 'breedingRecApp/clutch_detail.html', context)
def 离合器Detail_add(请求):
if request.method == "POST":
form = ClutchDetail_AddModelForm(request.POST or None)
if form.is_valid():
try:
form.save()
return redirect('breedingRecApp:clutch_detail')
except:
pass
else:
form = ClutchDetail_AddModelForm()
context = {'title': 'Species Detail Add',
'active': 'active',
'model': ClutchDetail,
'form': form,
}
return render(request, 'breedingRecApp/clutch_detail_add.html', context)
请帮我解决这个错误,我是 Django 的新手。 我有另一个 100% 相同的表单代码,它工作正常,但这个代码给了我一个错误,我被困在它上面:(
您收到此错误的原因是您的 function 包含一个代码路径,您在其中使用context
变量,而没有先定义变量。 例如,当您发出 POST 请求,但form.is_valid()
检查失败时就是这种情况。 在这种情况下,代码流将调用render(..)
function,但您没有定义context
变量。
最小的修复可能是将context
变量的定义移到else
语句之外:
def clutchDetail_add(request):
if request.method == 'POST':
form = ClutchDetail_AddModelForm(request.POST)
if form.is_valid():
form.save()
return redirect('breedingRecApp:clutch_detail')
else:
form = ClutchDetail_AddModelForm()
context = {
'title': 'Species Detail Add',
'active': 'active',
'model': ClutchDetail,
'form': form,
}
return render(request, 'breedingRecApp/clutch_detail_add.html', context)
如果方法是 POST 并且form.is_valid()
返回False
,或者form.save()
引发异常,则会引发此错误,因为您从未声明过上下文变量。
您也可能不需要try: except:
在您的form.save()
调用上,因为该表单在那时是有效的。
def clutchDetail(request):
clutchDetail = ClutchDetail.objects.all()
context = {'title': 'Clutch Detail',
'active': 'active',
'clutchDetail': clutchDetail,
}
return render(request, 'breedingRecApp/clutch_detail.html', context)
def clutchDetail_add(request):
if request.method == "POST":
form = ClutchDetail_AddModelForm(request.POST or None)
if form.is_valid():
form.save()
return redirect('breedingRecApp:clutch_detail')
else:
form = ClutchDetail_AddModelForm()
context = {'title': 'Species Detail Add',
'active': 'active',
'model': ClutchDetail,
'form': form,
}
return render(request, 'breedingRecApp/clutch_detail_add.html', context)
谈第二个代码块
唯一的地方
context
定义在第 12 行
context = {'title': 'Species Detail Add',
这仅在 else: 语句被触发时运行,所以当
return render(request, 'breedingRecApp/clutch_detail_add.html', context)
如果没有触发 else 语句,则不会定义上下文 干杯!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.