![](/img/trans.png)
[英]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.