Vous n'êtes pas identifié(e).
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
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
Essaye avec "form.as_ul"
ex:
<ol>
{{ form.as_ul }}
</ol>
les erreurs sont gérées automatiquement
A+
chris
Hors ligne