Django-fr

Forum

#1 15-12-2012 09:04:12

torrak
Membre
Inscription : 31-08-2011
Messages : 47

Problème affichage erreurs formulaire

Bonjour,

J'ai des soucis pour afficher les erreurs liées à mon formulaire. J'ai du louper quelque chose dans ma compréhension des formulaires.

Voici ma vue :

def connexion(request):
    if request.user.is_authenticated():
        return HttpResponseRedirect('')
    if request.method == 'POST':
        form = ConnectMembreForm(request.POST)
        if form.is_valid():
            utilisateur = form.save()
            password = request.POST['passwordee']
            util = authenticate(username=utilisateur.username, password=password)
            if util.is_active:
                login(request, util)
                return HttpResponseRedirect('')
        else:
            return HttpResponseRedirect('')
    else:
        form = ConnectMembreForm()
    return render_to_response('connexion.html', {'form' : form}, context_instance = RequestContext(request))

Mon formulaire:

class ConnectMembreForm(forms.Form):
    email = forms.EmailField(label = 'Adresse E-mail', max_length = 50, error_messages={'required': u'Vous devez entrer un e-mail'},)
    passwordee = forms.CharField(label = 'Mot de passe', max_length = 50, widget = forms.PasswordInput(render_value=False), error_messages={'required': u'Vous devez entrer mot de passe'},)     
    
    def clean(self):
        cleaned_data = self.cleaned_data #super(ConnectMembreForm, self).clean()
        email = cleaned_data.get("email")
        password = cleaned_data.get("passwordee")
        if email and password:
            try:
                result = User.objects.get(email = self.cleaned_data['email'])
                if result.check_password(password):
                    pass
                else:
                    raise forms.ValidationError(u"Cet utilisateur ou ce mot de passe ne correspondent pas")
            except User.DoesNotExist:
                raise forms.ValidationError(u"Cet utilisateur ou ce mot de passe ne correspondent pas")        
        else:
            raise forms.ValidationError(u"Cet utilisateur ou ce mot de passe ne correspondent pas")
        return cleaned_data

    def save(self):
        user = User.objects.get(email = self.cleaned_data['email'])
        return user

Voici mon template:

<! DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Connexion</title>
</head>

<body>
{% if messages %}
<ul class="messages">
    {% for message in messages %}
    <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
    {% endfor %}
</ul>
{% endif %}
<form id="connexion" action = "." method="post" class="form_connexion" >{% csrf_token %}
<dl>
<dt>{{ form.email.label_tag }}</dt>
<dd>{{ form.email }}</dd>
<dd>{{ form.email.errors}}</dd>
</dl>
<dl>
<dt>{{ form.passwordee.label_tag }}</dt>
<dd>{{ form.passwordee }}</dd>
<dd>{{ form.passwordee.errors }}</dd>
</dl>

<div class = "break">
    <input type="submit" Value="Connexion">
</div>
</form>
</body>
</html>

Voila si quelqu'un a des idées merci

Hors ligne

#2 17-12-2012 11:23:15

torrak
Membre
Inscription : 31-08-2011
Messages : 47

Re : Problème affichage erreurs formulaire

Petit edit :

C'est très très bizarre, lorsque je fait une vérification générale des erreurs comme ci-dessous, les erreurs soulevées par "clean" sont visibles ainsi que les erreurs particulières à chaque champ.

{{ form.errors }}

là j'avoue ne plus rien y comprendre...

Hors ligne

#3 04-01-2013 07:12:12

chris
Membre
Inscription : 22-12-2012
Messages : 5

Re : Problème affichage erreurs formulaire

Essaye avec "form.as_ul"

ex:
<ol>
    {{ form.as_ul }}
</ol>

les erreurs sont gérées automatiquement
A+
chris

Hors ligne

Pied de page des forums