Django. Message d'erreur pour le formulaire de connexion
Je fais login/mot de passe de la forme:
modèle:
class LoginForm(forms.Form):
username = forms.CharField(max_length=100)
password = forms.CharField(widget=forms.PasswordInput(render_value=False),max_length=100)
vue:
def login_view(request):
if request.method == 'POST':
username = request.POST['email']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None and user.is_active:
login(request, user)
return HttpResponseRedirect("/n1.html")# Redirect to a success page.
return HttpResponseRedirect("/login")
form=LoginForm()
return render(request, 'enter.html', {'login_form': LoginForm})
url:
(r'^login/$', login_view),
modèle:
{% if form.errors %}
<p>Something is wrong</p>
{% endif %}
<form class="form-signin" action="" method="post">
<h2 class="form-signin-heading">Login</h2>
{% csrf_token %}
<input class="input-block-level" type="text" name="email" value="" id="email" placeholder="Email">
<input class="input-block-level" type="password" name="password" value="" id="username" placeholder="Password">
<button class="btn btn-large btn-primary" type="submit">Login</button>
<input type="hidden" name="next" value="{{next|escape}}" />
</form>
- Je utiliser rediriger vers la page de connexion, puis login ou mot de passe est incorrect, mais je veux faire de message d'erreur dans ce cas. Pourquoi la construction {% si le formulaire.les erreurs %} ne fonctionne pas? Thx!
source d'informationauteur Wolter
Vous devez vous connecter pour publier un commentaire.
Parce que la forme n'a aucune idée de une erreur s'est produite.
Lorsque vous construisez le formulaire ici:
Vous êtes à la construire sans la transmettre toute information. Il ne sait rien sur le POSTE de l'utilisateur vient de le faire, ou que la connexion a échoué, ou que le mot de passe a été absent, ou quel que soit l'erreur a été.
Voici ce que mes formulaires de login ressembler à:
Nous l'emporter sur la forme du
clean
méthode, de sorte que si le formulaire est valide, nous pouvons vérifier les références de l'utilisateur. Nous avons aussi mis une méthode d'ouverture de session sur la forme de l'objet lui-même, à faire de notre point de vue propre.Prochaine, de notre point de vue, nous voulons faire de cette:
Nous instancions la forme et de la demande.POSTE à vérifier.
Si nous avons un POSTE, on vérifie si le formulaire est valide. La forme est "propre" méthode sera appelée, et de vérifier les informations d'identification d'utilisateur pour nous.
Si les informations d'identification échoue, nous élevons une erreur, dont nous avons besoin de le montrer dans notre modèle.
Les erreurs soulevées par la forme (mais pas attaché à un champ) sont stockés dans non_field_errors, qui peuvent être affichés comme suit:
Lorsque vous rediriger, je ne suis pas sûr de vous envoyer le contexte de votre page. Ainsi, lorsque vous rediriger vers le /login/page, django tinks c'est une nouvelle forme qui est chargé.