So finden Sie form.has_errors ODER form.errors und aktivieren Sie den Fehler an erster Stelle

8

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

    
q0987 14.11.2011, 16:13
quelle

2 Antworten

10

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.

%Vor%

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 .

    
Alasdair 14.11.2011, 16:58
quelle
2

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.

    
Chris Pratt 14.11.2011 16:32
quelle

Tags und Links