Django – benutzerdefinierte Felder

Wir haben eine große Auswahl an Feldtypen , wenn wir mit den Formularen in Django arbeiten . Es kommt jedoch vor, dass wir eine Validierung benötigen oder ein neues Verhalten definieren. Dazu können wir unsere Felder problemlos mit den Methoden von Django.forms anpassen .

Der Vorteil der Arbeit mit benutzerdefinierten Feldern in den Formularen besteht darin, dass wir uns keine Gedanken über deren Kompatibilität mit mehreren Backends machen sollten, als ob wir uns Sorgen machen müssten, wenn wir einen neuen Feldtyp im Modell erstellen.

Benutzerdefinierte Felder

Ein benutzerdefiniertes Feld im Formular ermöglicht es uns, Unterstützung für Dateneingabetypen zu generieren, die in der Vielzahl der von Django angebotenen Optionen nicht vorhanden sind. Dadurch können wir personalisiertere Ergebnisse erzielen und unserer Anwendung dabei helfen, eine bessere Konformität zu erzielen unsere Ziele

Wie erstelle ich sie?
Um ein benutzerdefiniertes Feld zu erstellen, muss es von der in Django.forms enthaltenen Fields- Klasse geerbt werden. Auf diese Weise stellen wir die korrekte Funktion innerhalb des Formulars sicher . Ein weiterer Aspekt, den wir bereits erwähnt haben, ist, dass diese Art von Feldern einfacher zu implementieren ist, da wir die Arbeit mit verschiedenen Backends, dh mit mehreren Datenbanken, wie es in einem Modell der Fall wäre, nicht berücksichtigen müssen Daten vom Typ “Zeichenfolge” werden im Formular nur ausgewertet, wenn der Benutzer Daten eingibt.

Validierung

Dies ist möglicherweise der grundlegende Aspekt bei der Generierung neuer Felder, da wir bei der Definition eines Validierungstyps den Feldtyp festlegen können, da die Validierung diesem Feld den eindeutigen Charakter verleiht.

Wie füge ich eine Validierung hinzu?
Um eine Validierung einzuschließen, müssen wir auf die clean () -Methode zurückgreifen. Diese Methode akzeptiert das richtige Objekt der Klasse und den Wert in der Evaluierung. Gemäß den von uns erstellten Standards kann diese Methode dann unterscheiden, ob die eingegebenen Daten übereinstimmen oder nicht Wenn dies nicht der Fall ist, können Sie eine Ausnahme auslösen und eine von uns festgestellte Fehlermeldung senden.

In der folgenden Abbildung sehen wir einen Code, in dem zwei neue Arten von benutzerdefinierten Feldern generiert werden:

See also  Aktivieren Sie den Microsoft Virtual Miniport-Adapter, um einen Hotspot zu erstellen

django_campos_person.jpg

Hier sehen wir, wie wir alles anwenden, worüber wir gesprochen haben. Zuerst importieren wir Felder in Django.forms, da es die Klasse ist, die wir verwenden müssen. Dann erstellen wir eine Klasse, die in diesem Fall von fields.DecimalField erbt verstanden, dass unser neues Feld numerisch sein wird.

Dann definieren wir einen Fehler mit dem Namen out_of_range . Dies ist nützlich, wenn wir beim Validieren der Daten eine Ausnahme auslösen , um eine Nachricht anzuzeigen , die den Benutzer anleitet. Dies gibt uns die Möglichkeit, verschiedene Arten von Nachrichten für verschiedene Fehler zu haben.

Wichtig
Schließlich überschreiben wir die clean-Methode in jeder neuen Klasse, damit wir die neue Validierung ausarbeiten können. Zuerst verwenden wir die super (). Clean () -Methode. Mit diesem Aufruf rufen wir die clean () -Methode der Klassenfelder auf. Mit decimalFields können wir das validieren Seien Sie ein korrekter numerischer Typ, bevor Sie unsere eigene Validierung auswerten. Dies erspart uns das Auffinden einer Validierung der Art der eingegebenen Daten. Hier können wir den Vorteil der Vererbung erkennen.

Schließlich bestätigen wir mit unseren Bedingungen, und wenn sie nicht erfüllt sind, werfen wir den Fehler auf; Daher haben wir bereits ein benutzerdefiniertes Feld erstellt.

Damit schließen wir das Tutorial mit einem zusätzlichen Tool ab, mit dem wir Anwendungen erstellen können, die unseren Anforderungen näher kommen.

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *