2009-08-09 6 views
0

maintenant l'apprentissage im pour valider le formulaire, « tous » fonctionne, im montrant les erros des champs vides, mais j'ai 2 questions:comment valider le formulaire et montrer la valeur des champs remplis?

  1. comment montrent mal la valeur dans les champs remplis quand il y a des erreurs dans une autre champs ?, comme <input ... value= {{ value }} > le problème est que mes champs ne sont pas des champs de formulaires html.
  2. comment mal montrer l'erreur exactement sur les champs vides?

comment j'ai ceci:

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> 

Merci cont n :)

Répondre

0

Vous formez le code semble bien ici, mais votre point de vue doit changer à ceci:

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 } 

et votre modèle devrait ressembler à ceci:

{% 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> 

Maintenant, ce qui se passe est que si Il y a de mauvaises données du POST, form.is_valid() échouera et la vue renverra le formulaire validé, qui inclura des erreurs à côté des champs qui les ont. Django s'occupe de toute la gestion des erreurs pour vous ici! Essayez-le et laissez-moi savoir si cela fonctionne comme vous le souhaitez.

C'est une très bonne ressource si vous souhaitez voir comment/pourquoi cette version simplifiée fonctionne mieux: http://www.djangobook.com/en/2.0/chapter07/

+0

Merci pour la relecture – Asinox

Questions connexes