Django convalidare e tornare a visualizzare in anteprima URL?
-
12-09-2019 - |
Domanda
im chiedendo ancora una volta :), io non so come fare questo.
Il mio inglese non è troppo buono, ma mal provate a chiedere questo:
quanto male convalidare un modulo e tornare alla URL di anteprima (la stessa forma vista) e mostrare gli errori di validazione ?, im chiedendo questo perché ho 2 forma di, l'azione del primo modulo sta per un secondo modulo (POST) , ma in questa seconda forma (vista?) ho bisogno di validare la prima forma, se il primo modulo è valido voglio mostrarvi la seconda forma altro malato mostrare la prima forma di errori.
Non so se im chiaro, mi dispiace.
im a pensare a questo:
def secondForm(request):
if request.method =='POST':
form = FirstForm(request.POST)
if form.is_valid():
fields = request.POST.copy()
# showing the second form?? with x differents fields, i have 2.
if fields['xvalue']=='1': # this is from radio buttons
form2 = xSecondForm()
elif fields['xvalue']=='2':
form2 = ySecondForm()
else:
# here go back with erros msgs????
#return render_to_response('firstFormTemplate.html',{'form': form}, context_instance=RequestContext(request))
else:
#return something or go back ???
Grazie ragazzi PD: sono felice, im codifica Django + python: D
Soluzione
Sì, FormWizard potrebbe essere la vostra risposta, ma probabilmente si potrebbe fare con una certa logica in una vista.
Qualcosa di simile:
def your_view(request):
context = {}
data = request.method == 'POST' and request.POST or None
form = FirstForm(data=data)
# If the first form is valid, build the second.
if form.is_valid():
if form.cleaned_data['xvalue'] == 1:
form2 = xSecondForm(data=data)
else:
form2 = ySecondForm(data=data)
context['form2'] = form2
# If both forms are valid, everything is done.
if form.is_valid() and form2.is_valid():
# TODO: put save/processing logic here
# Now redirect.
return http.HttpResponseRedirect(...)
# If we get here, either there hasn't been a post yet, the second form hasn't
# been entered, or there was an error in either form.
context['form'] = form
return render_to_response(...)
Altri suggerimenti
Ok, ragazzi, penso che la soluzione mi è FormWizard:)
ma im non è chiaro con qualcosa sulla mia seconda forma, perché ho bisogno di mostrare la seconda forma in modo diverso se l'opzione selezionata in radio è per i campi più o meno (nel secondo modulo)
; (
Credo che si desidera utilizzare process_step () per fare un po 'di logica su come / cosa fare video del secondo modulo.