Ich habe mehrere verwandte Fragen und poste aus Gründen der Klarheit unter einem Thema.
%Vor% Basierend auf dem Buch verwendet login.html stattdessen form.has_errors
von form.errors
. Das form.has_errors
gibt jedoch keine Warnmeldung aus, auch wenn ich einen falschen Benutzer / ein falsches Passwort eingegeben habe. Nach einigen Untersuchungen ändere ich es in form.errors
und es funktioniert für mich.
Frage 1 & gt; Welcher sollte verwendet werden form.errors
oder form.has_errors
?
Frage 2 & gt; Wenn form.has_errors
nicht funktioniert, warum reklamiert sich django überhaupt nicht. Das Buch wurde für Django 1.0 geschrieben und ich benutze Django 1.3. Ist das der Grund?
Frage 3 & gt; Wie überprüft man, welche Attribute das Formular hat? Ich habe das folgende versucht und es gibt nicht die Informationen, die ich brauchte.
%Vor%Frage 4 & gt; Wann wird die folgende Anweisung benötigt?
%Vor%Danke
form.has_errors
ist nicht in der forms api dokumentiert. Ich habe eine kurze Version des Quellcodes erstellt und konnte sie weder in Django 1.3 noch in meinem Svn-Checkout in der 1.0.X-Zweigstelle finden. Es scheint, dass es ein Fehler in dem Buch ist, das Sie verwenden.
Überprüfen Sie form.errors
in Ihrer Vorlage gut.
Wenn Sie versucht haben, in der Ansicht auf form.has_errors
zuzugreifen, erhalten Sie AttributeError
. Django beschwert sich jedoch nicht, wenn versucht wird, auf eine Variable zuzugreifen, die nicht in der Vorlage vorhanden ist, sodass {{ form.has_errors }}
automatisch fehlschlägt. Weitere Informationen finden Sie in den Dokumentationen zu Vorlagenvariablen .
Um die Attribute im Formular zu überprüfen, verwenden Sie dir
für das Formularobjekt, nicht für die Ansicht.
Ich empfehle Ihnen jedoch, stattdessen die form api Dokumentation zu lesen.
Das csrf-Token wird benötigt, wenn Sie den Cross-Site-Request-Fälschungsschutz von Django verwenden .
form.has_errors
ist nur ein Boolescher Wert ( True/False
). Es ist eine bequeme Methode zum Testen, ob ein Formular fehlerhaft ist oder nicht (offensichtlich).
form.errors
andererseits ist das eigentliche Array von Fehlern.
Tags und Links django