2009-08-09 11 views
0

jetzt im Lernform zu bestätigen, „alle“ arbeitet, im der erros von leeren Feldern zeigt, aber ich habe 2 Fragen:Wie validiere Formular und zeige den Wert der gefüllten Felder?

  1. wie krank Show der Wert in den gefüllten Felder, wenn es Fehler in einem anderen sind Felder ?, wie <input ... value= {{ value }} > das Problem ist, dass meine Felder nicht HTML-Formularfelder sind.
  2. Wie schlecht zeigen Sie den Fehler genau über die leeren Felder?

, wie ich habe dies:

form.py

class NuevaDiligenciaForm(forms.Form): 
    titulo = forms.CharField(max_length=70)  
    tipo = forms.ChoiceField(choices=TIPO)   
    vias= forms.TypedChoiceField(widget=forms.RadioSelect(), choices=CHOICES) 

view.py

def add(request):   
    form = NuevaDiligenciaForm() 
    errors =[] 
    if request.method =='POST': 
     if not request.POST.get('titulo',''): 
      errors.append('Titulo es requerido') 
     if not request.POST.get('vias',''): 
      errors.append('Vias es requerido') 
     #if not errors: 
    return render_to_response('account/add.html', { 'formulario':form ,'errors':errors},context_instance = RequestContext(request)) 

template.html

{% if errors %} 
    <ul> 
     {% for error in errors %} 
     <li>{{ error }}</li> 
     {% endfor %} 
    </ul> 
{% endif %} 

{% if message %} 
     <p style="color: red;">{{ message }}</p> 
{% endif %} 
<form action='.' method='POST' class="nueva-diligencia"> 

{{ formulario.as_p }} 

<input type="submit" value="Continuar"> 
</form> 

Dank agai n :)

Antwort

0

Sie bilden Code sieht hier in Ordnung, aber Ihre Sicht muss dies ändern:

def add(request): 
if request.method =='POST': 
    form = NuevaDiligenciaForm(request.POST) 
    if form.is_valid(): 
     clean_data = form.cleaned_data 
     # Now do something with the cleaned data... 
else: 
    form = NuevaDiligenciaForm() 
return render_to_response('account/add.html', { 'formulario': form } 

und Ihre Vorlage sollte wie folgt aussehen:

{% if message %} 
<p style="color: red;">{{ message }}</p> 
{% endif %} 
<form action='.' method='POST' class="nueva-diligencia"> 
    {{ formulario.as_p }} 
    <input type="submit" value="Continuar"> 
</form> 

Nun, was passiert, ist, dass, wenn Es gibt fehlerhafte Daten aus dem POST, form.is_valid() schlägt fehl und die Ansicht gibt das validierte Formular zurück, das Fehler neben Feldern enthält, die sie enthalten. Django kümmert sich hier um die gesamte Fehlerbehandlung! Probieren Sie es aus und lassen Sie es mich wissen, wenn es so funktioniert, wie Sie es erwarten.

Dies ist eine ziemlich gute Ressource, wenn Sie sehen gerne würde wie/warum diese vereinfachte Version tatsächlich funktioniert besser: http://www.djangobook.com/en/2.0/chapter07/

+0

Dank für die Wiedergabe – Asinox

Verwandte Themen