Ich habe ein einfaches Formset verwendet, um einen Spender zu meiner Datenbank zu registrieren.Django UnboundLocalError
Wenn ich auf der Seite einen vorhandenen Eintrag aus der DB landen und einen Wert aus einer Formulareingabe entfernen und abschicken bekomme ich einen 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))
Entschuldigung. Ich habe noch einmal auf Code hingewiesen und meine Schuld entdeckt. der "dac" muss eine globale Variable sein. Ich erklärte es und "dam" als global inside def und voilá! – rjdsantos
Das ist falsch, in fast allen Fällen sollten Sie keine globalen Variablen verwenden. Sie sollten diese Variablen in der Ansicht für jeden möglichen Fall in IFs auffüllen (möglicherweise füllen sie vor der ersten IF). Sie scheinen von der bereitgestellten Variablen document_root abhängig zu sein, daher sehe ich keinen Grund, warum sie global sein sollten. – ilvar