Django Klasse hinzufügen zum Formular <input ..> Feld

Sind wir auf der Suche nach einer Lösung zum hinzufügen einer CSS-class-Attribut, um eine Django-form <input..> Feld. Wir haben gesehen, der Rat schlägt vor, dass wir wickeln Sie das Feld in einer <div> http://docs.djangoproject.com/en/1.2/topics/forms/#customizing-the-form-template, aber diese Beratung hauptsächlich scheint zu gelten, Felder, Labels, nicht, es ist <input ...>.

Dies sind insbesondere die Beratung funktioniert nicht, wenn Sie versuchen, erstellen Sie einen Rahmen um die <input> Feld. In diesem Fall, die <div> wird angewendet, um die bounding-box, und nicht das eigentliche Eingabefeld. Zum Beispiel .wrapper { border: 1px solid #666;line-height:22px;height:22px;padding:3px 5px;width:205px;} erstellen Sie einen Rahmen um den Bereich, eher als ersetzen Sie die Standard - <input ...> Grenze.

Haben wir zurückgegriffen, um die Anwendung der Klasse über ein widget angewendet, um die Form-Klasse, aber dieses fehlt, eine bestimmte Menge an code, die Eleganz (und gegen TROCKEN). Zum Beispiel, löst dies die Notwendigkeit.

class ContactUsForm(forms.Form):
    name = forms.CharField(widget=forms.TextInput(attrs={'class':'form_text'}))

Aber natürlich, diese Beziehungen die Form sehr eng an die CSS. Und es wird noch komplexer, wenn Sie versuchen, gelten die Attribute der Klasse zu <input ..> Felder, wenn das Formular basiert, anstatt auf die coolen neuen Formen.ModelForm system.

Verbrachten wir den besseren Teil von zwei Tagen zu spielen, mit diesem Problem (und studieren Django source code), und es sieht aus wie wir werden können, das erreichen die am weitesten Kanten von Django für dieses eine bestimmte Thema-aber wir wollten nur nehmen Sie einen pass auf StackOverflow zu sehen, ob jemand hatte Einsicht.

Vielen Dank für jede Einsicht.

Eine Letzte Bemerkung: fühlen Sie sich frei, um uns direkt, wenn das problem ist unser Verständnis von CSS (statt django). Wir verbrachten ziemlich viel Zeit messing mit CSS-Optionen, aber keiner von Ihnen scheinen, um es uns zu ermöglichen das erreichen der gewünschten Wirkung-das ist das ersetzen der Standard - <input...> Grenze.

InformationsquelleAutor user590028 | 2011-03-12
Schreibe einen Kommentar