Je suis coincé à cette erreur (variable locale de Unboundlocalerror 'Contexte' référencé avant l'affectation) Bien que l'enregistrement de la forme de presque même type d'autre fonctionne bien, mais celui-ci n'est pas et montrant une erreur
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)
3 Réponses :
La raison pour laquelle vous obtenez cette erreur est parce que votre fonction contient un codePath où vous utiliser em> le contexte em> la variable code>, sans définir la variable d'abord. C'est par exemple le cas lorsque vous faites une demande postale, mais le La plus petite solution serait probablement de bouger La définition du contexte code> variable EM> externe em> l'instruction code> el / code>: p> form.is_valid () code> chèque échoue. Dans ce cas, le codeFlow appellera la fonction
rendu (..) code>, mais vous n'avez pas défini la variable code> context code>.
@ S4Starb4boy: Bien sûr que ce n'est pas, car le formulaire n'est pas valide. Depuis le formulaire.is_valid () code> retourne
false code>, cela signifie que vous avez entré une valeur incorrecte.
Dans le cas où la méthode est une post et le Vous n'avez probablement probablement pas besoin de faire form.is_valid () code> renvoie
false code> ou
formul_save () code> augmente Une exception Cette erreur est soulevée lorsque vous n'avez jamais déclaré la variable de contexte.
essayer: sauf: code> sur votre
form.save () code> appeler comme le formulaire est valide à ce stade. P >
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)
C'est malheureusement parce que votre forme est invalide. Il y a une ligne qui fait si forme.is_valid (), seulement si cela revient vrai, cela procédera-t-il à la forme (); Que dit-il si vous imprimez (formidateurs)?
parler du second bloc de code em> Le seul endroit p> est défini est en ligne 12 P> return render(request, 'breedingRecApp/clutch_detail_add.html', context)
Merci! Je re-placons la variable de contexte maintenant, une erreur est partie, mais mes données ne se sauvegardent pas dans DB. J'ai le même code pour une autre forme qui fonctionne bien.
Si la méthode est un post, mais le
form.is_valid () code> échoue ou
form.save () code> augmente une exception, vous ne définissez jamais le contexte
< / code> variable.