【发布时间】:2012-03-25 18:46:14
【问题描述】:
我有一个简单的表单集,用于将捐赠者注册到我的数据库。
如果我在页面上找到来自 DB 的现有条目并从表单输入中删除一个值并提交,我会收到 UnboundLocalError。
Django Version: 1.3
Exception Type: UnboundLocalError
Exception Value: local variable 'dac' referenced before assignment
views.py
@login_required
def dizimista(request, nr_dizimista):
dizimista = get_object_or_404(CadastroDizimista, pk=nr_dizimista, usuario=request.user)
if request.method == 'POST' and request.POST.get('action') == 'Cancelar':
return HttpResponseRedirect("/lista/")
elif request.method == 'POST' and request.POST.get('action') == 'Salvar':
form = FormCadastroDizimista(request.POST, request.FILES, instance=dizimista)
if form.is_valid():
cadastro = form.save(commit=False)
cadastro.usuario = request.user
cadastro.save()
return HttpResponseRedirect("/lista/")
else:
form = FormCadastroDizimista(instance=dizimista)
dac = CadastroDizimista.objects.get(pk=nr_dizimista).datacadastro
dam = CadastroDizimista.objects.get(pk=nr_dizimista).datamodificado
return render_to_response("cadastro.html", {'dac': dac, 'dam': dam, 'form': form}, context_instance=RequestContext(request))
【问题讨论】:
-
对不起。我又强调了一次代码并发现了我的错误。 “dac”必须是全局变量。我在def和voilá中将它和“dam”声明为全局!
-
这是不正确的,在几乎所有情况下你都不应该使用全局变量。您应该为 IF 中的任何可能情况填充视图内的变量(可能在第一个 IF 之前填充它们)。它们看起来依赖于提供的变量 document_root,所以我看不出它们为什么应该是全局的。
标签: django django-views django-errors