2010-12-03 24 views
0

J'ai le formulaire suivant, qui permet à un utilisateur de soumettre un fichier et une adresse e-mail.Django: empêcher les champs de formulaire d'être effacés lorsque des données invalides sont entrées

from django import forms 
from django.utils.translation import gettext_lazy as _ 
from django.core.validators import validate_email 

class UploadFileForm(forms.Form): 
    email = forms.EmailField() 
    file = forms.FileField() 

class EmailField(forms.CharField): 
    default_error_messages = { 
     'invalid': _(u'Enter a valid e-mail address.'), 
    } 
    default_validators = [validate_email] 

est ici le point de vue:

def upload_file(request): 

    if request.method == 'POST': 
     form = UploadFileForm(request.POST, request.FILES) 
     if form.is_valid(): 
      email = form.cleaned_data['email'] 
      handle_uploaded_file(email, request.FILES['file']) 
      return HttpResponseRedirect('/thanks') 
    else: 
     form = UploadFileForm() 
    return render_to_response('upload_file.html', {'form': form}, 
     context_instance=RequestContext(request)) 

Si l'utilisateur soumet le formulaire avec un e-mail valide, le formulaire est affiché à l'utilisateur, mais les champs sont effacés. Quelle est la bonne façon d'empêcher cette suppression des champs de formulaire?

+1

Montrez votre point de vue. –

+0

Ne pas effacer les champs est le comportement par défaut de django. J'ai mis en place un projet fictif en utilisant votre vue et le code du formulaire ... le formulaire affiché à l'utilisateur après une erreur n'a pas les champs effacés, donc tout ce que vous avez posté semble fonctionner comme sur une installation de stock de django 1.2. –

+0

Mais cela les efface pour moi en utilisant ce qui précède. J'utilise Django 1.2.1. Qu'est-ce qui pourrait causer cela sur le mien mais pas le vôtre? – FunLovinCoder

Répondre

2

Erreur stupide. Mise à jour de mon modèle pour inclure les valeurs de formulaire Tout fonctionne maintenant.