2012-08-15 3 views
0

J'utilise earle/django-bootstrap pour montrer une forme stylisée avec un bootstrap twitter. Je veux pouvoir changer le style et montrer les erreurs que l'utilisateur a commises en remplissant le formulaire (c'est-à-dire s'il a manqué un champ requis)Comment afficher les erreurs de formulaire dans django-bootstrap?

Je ne trouve pas dans la documentation comment sortir des erreurs. Je soumets le formulaire en utilisant jquery.form.js et en retournant des erreurs dans un tableau dans un dictionnaire, le problème est, le tableau d'erreurs retourne vide, et même imprimer le tableau d'erreurs dans la vue le montre vide.

Le code pour la forme:

class SomeForm(BootstrapForm): 
    class Meta: 
     layout = (
     Fieldset("Form title:","first_field", "second_field",), 
    ) 

    first_field = forms.CharField(label=u'Some Text', max_length=50, error_messages={'required':u'The error msg',},required=True,) 
    second_field = forms.ModelChoiceField(label=Some Text', queryset=SomeClass.objects.all(), error_messages={'required':u'The error msg. ',}, required=True,) 

Et le code de la vue:

@login_required 
def new_case(request): 
    if request.method == 'POST': 
     form = SomeForm(request.POST) 
     if form.is_valid(): 
      new_case = form.save(request.user) 
      return HttpResponseRedirect('/casos/') 
     else: 
      response_dict = {'ok': False, 'msg': None, 'err': None,} 
      err = {} 
      caseErrors = {} 
      caseErrors.update(form.errors) 
      for field in caseErrors: 
       caseErrors[field] = [unicode(error) for error in caseErrors[field]] 
      err['caso']=caseErrors 
      response_dict['msg'] = u'The fields are not valid.' 
      response_dict['err'] = err 
      return HttpResponse(simplejson.dumps(response_dict), mimetype='application/json') 
    else: 
     form = SomeForm() 
     return render_to_response('casos/new_case.html', { 'form': form }, context_instance=RequestContext(request)) 

également le jQuery

<script type="text/javascript" src="{{ STATIC_URL }}jquery/jquery.form.js"></script> 
<script type="text/javascript"> 

$(function() { 
    $('#agr_ncaso').ajaxForm({ 
     dataType: 'json', 
     beforeSubmit: before_submit, 
     success: success 
    }); 
}); 

function before_submit(formData, jqForm, options) { 
    $('.error').removeClass('error'); 
    $('.alert-error').remove(); 
    return true; 
} 

function success(json) { 
    if (json.ok) { 
     window.location = '/casos/'; 
    } 
    else if (json.err) {    
     $('<div class="alert alert-error"><strong>Error inform </strong></div>').insertBefore('form')  
     for (campo in json.err) { 
     $('#div_id_' + campo).addClass("error"); 
     } 
     $('.alert').fadeIn('slow'); 
    } 
    else { 
     alert(json.msg); 
    } 
} 

Répondre

1

Les erreurs de forme sont à l'intérieur err [ 'casos'], pas dedans err. Passez une bonne journée

+0

Merci, j'avais copié le code d'un projet précédent. Je suppose que j'ai changé quelque chose. – Omaraf

Questions connexes