Django - Widgets

Inhaltsverzeichnis
Wenn wir ein Formular in . definieren Django Abgesehen davon sagen wir ihm, welches Modell es annehmen wird und welche Felder es anzeigen soll, wir können ihm auch sagen, welches Verhalten und welche Art von HTML jedes Feld definieren wird, wissen wir, dass zum Beispiel a CharField Es sollte uns eine Texteingabe anzeigen, aber was ist, wenn wir möchten, dass diese Texteingabe bereits mit einer Klasse geliefert wird, sodass sie ein Verhalten von aufweist CSS oder dieses Element wird durch ein anderes Element ersetzt.
Um dies zu erreichen, haben wir die Widgets und wir können sie zum Zeitpunkt der Erstellung der Formularklasse in unserer Anwendung definieren.
HTML-Verhalten
Wie wir erwähnt haben, Django zeigt Formularfelder in . an HTML Quelltext und dazu, je nach definiertem Feldtyp, das HTML-Element, das beim Generieren des Formulars angezeigt wird, wenn wir zusätzliche Funktionalitäten in unseren Feldern wünschen Django bietet uns die Widgets um diese zusätzlichen Funktionen integrieren zu können.
Wie wird es erreicht?Dies wird erreicht, weil jeder Das in Django in einem Formular definierte Feld hat ein Widget-Attribut und daher können wir im Moment der Instanziierung diesem Attribut einen Wert geben und es so arbeiten lassen, wie wir es wollen.
Benutzerdefinierte Widgets
Ein weiterer Aspekt, den wir berücksichtigen können, ist, dass, wenn die Widgets von DjangoWie bei den Feldtypen können wir sie anpassen, sodass wir bestimmte Verhaltensweisen erreichen können, die zu unserer Anwendung passen.
Zum Beispiel können wir a . erstellen Widget-Typ das ist integriert mit a Javascript-Kalender die wir entwickelt haben oder die speziell für unser Formular angefordert werden.
NachlassFür ein benutzerdefiniertes Widget die erwarteten Grundfunktionen erhalten, von denen erben soll Django.forms.widgets.Widget Dies ist jedoch nicht zwingend erforderlich, sobald es von dieser Klasse geerbt wurde, können wir die erforderlichen Methoden überschreiben, um unsere Funktionalität zu erhalten.
Praktische Anwendung
Sehen wir uns unten ein Beispiel an, in dem wir ein Formular mit der Widgets Um einige Aspekte der Felder zu definieren, werden wir diese Übung in der interaktiven Konsole von Python:

Im Bild sehen wir dann, dass wir in der Konsole eine Formularklasse definiert und darin zwei Felder platziert haben, sodass wir die Instanziierung aus einem Modell vermeiden. Das erste Feld, das wir mitteilen, ist ein Feld IntegerFeld, damit wird es zum Zeitpunkt des Absendens nur auf Zahlen validiert, aber was uns interessiert, ist das zweite Feld, das wir ihm mitteilen, dass es ein Widget hat und dass es ein ist Formulare.TextbereichWenn wir es betrachten, haben wir es als CharField definiert, dies sagt uns, dass es im HTML eine Texteingabe sein soll, jedoch mit dem Widget Wir haben es geändert, wenn wir das resultierende HTML sehen, das wir haben, ist es a HTML-Textbereich.
Wenn wir wollen Definiere ein Feld mit einem benutzerdefinierten Widget Wir können eine Klasse mit einem Eingabetyp deklarieren und diese dann in das Formular einfügen. Sehen wir uns diesen Code an, damit wir Folgendes verstehen:
 Klasse PercentageInput (forms.TextInput): def render (self, name, value, attrs = None): return '% s %%'% super (PercentageInput, self) .render (name, value, attrs) 

Dann in der Form nennen wir es:
Rabatt = forms.IntegerField (Widget = PercentageInput ())

Wie wir sehen, ist es ganz einfach, neue Arten von hinzuzufügen Widgets zu unserer Bewerbung.Hat dir dieses Tutorial gefallen und geholfen?Sie können den Autor belohnen, indem Sie diesen Knopf drücken, um ihm einen positiven Punkt zu geben
wave wave wave wave wave