2009-03-09 6 views
2

Ich versuche, ein Formular mit CSS zu stylen. Zuallererst habe ich kein vollständiges Beispiel gesehen, abgesehen von der offiziellen Dokumentation, daher würde ich mich über alle Blogeinträge oder Artikel freuen.Styling-Formulare und Django-Formularwerte

nun auf meiner Form, wird ein typischer Charfield auf html wie folgt übersetzt:

<input type="text" name="artists" id="id_artists" /> 

Wenn meine Form der vorherigen Charfield den Wert auf einige Feldfehler enthält, erinnert sich und geht:

<input type="text" name="artists" value="Pink Floyd" id="id_artists" /> 

Wie kann ich diesen Wert (value="Pink Floyd") in Django-Formularen erhalten? Sprich mein Feld ist {{form.artists}}, ich {{form.artists}} als das Feld, {{form.artists.label}} als Etikett verwenden kann, {{form.artists.errors}} und {{form.artists.help_text}}, aber wie dieser Wert?

Vielen Dank im Voraus!

Antwort

4

Erstellen Sie das Eingabefeld speziell, anstatt sich auf django zu verlassen, um es automatisch zu erstellen.

Etwas wie:

<input type="text" name="artists" id="id_artists" value="{{form.artists.title}}" /> 

+0

Hallo Steerpike, Dies wird die Aufgabe erledigen, aber ich muss immer noch diesen Wert erhalten, um es zu liefern, wenn es Fehler in einem anderen Feld auf dem Formular gibt - sonst wird es ausgeblendet. –

2

Sie können den aktuellen Wert des Feldes erhalten von der data Eigenschaft funktionieren sollte:

{{ form.artists.data }} 

kann ich sehen, die Django-Dokumentation nicht zu erwähnen, dies funktioniert, aber es funktioniert ...

0

Sie können auch Fügen Sie der Formularklasse zusätzliche Validierung hinzu, um etwas mit den Formulardaten zu tun. Von djangobook.com:

from django import forms 

class ContactForm(forms.Form): 
    subject = forms.CharField(max_length=100) 
    email = forms.EmailField(required=False) 
    message = forms.CharField(widget=forms.Textarea) 

    def clean_message(self): 
     message = self.cleaned_data['message'] 
     num_words = len(message.split()) 
     if num_words < 4: 
      raise forms.ValidationError("Not enough words!") 
     return message 

Innerhalb des clean_message Methode können Sie einen bestimmten Bereich des self.cleaned_data Wörterbuch mit zuzugreifen. Dieses Wörterbuch ist für jedes validierte Formular verfügbar.

Achten Sie darauf, das Feld zurückzugeben, in diesem Fall message oder andernfalls None zurückgegeben wird.