2017-02-09 4 views
0

Dies ist eine Frage, die ich vor einiger Zeit habe, da ich einfach nicht verstehe, warum diese Entscheidung so entschieden wurde.Über Djangos Widget-Designprinzipien

Wenn wir ein Widget rendern (z. B. wegen der Verwendung eines Formulars), hat seine Render-Funktionen eine name arg. Warum, wenn ein HTML-Tag-Name ein attr ist, kann nicht als Teil des attrs dict festgelegt werden, das an diese Funktion übergeben wird? Es sollte sinnvoller sein, name nur zu verwenden, wenn Sie keinen Attr-Namen angeben.

Für das Verständnis, wenn ich eine attrs {"name": "no_one_knows[]"}, wenn ich das Widget rendern seinen Namen sollte "no_one_knows[]", nicht die von arg übergeben werden. Auf diese Weise könnte ich ein HTML-Tag haben, das direkt als Liste (getlist(..)) auf der Serverseite geparst werden kann (zum Beispiel).

+0

Ok, mein 'getlist (..)' Beispiel ist nicht gültig, da Django es ohne Notwendigkeit von '[]' im Namen analysiert. Aber die Idee ist die gleiche, in der Lage, den Namen zu überschreiben. – RompePC

+0

Was meinst du damit, ein Widget "manuell" zu rendern? –

+0

Aufruf 'widget.render (..)', ich werde bearbeiten, ist nicht so klar – RompePC

Antwort

0

Ein Widget macht keinen Sinn, wenn kein Feld vorhanden ist. Das Feld ist dafür verantwortlich, die Eingabe zu akzeptieren und zu validieren; es ist also das Feld, das das Namensattribut bestimmen muss, sonst hätte es keine Möglichkeit zu wissen, welcher Wert in den Daten verwendet werden soll.

Butu sollten Sie nie das Widget direkt rendern müssen, indem Sie seine render Methode aufrufen. Auch das ist die Aufgabe des Feldes.

+0

Es geht nicht darum, das Widget direkt zu rendern (starke Gründe, die ich dafür brauche). Aber deine Antwort löscht meine Gedanken. – RompePC

Verwandte Themen