2016-04-27 19 views
0

Ich habe ein Django-Projekt mit vielen Standard-HTML-Formularen.Django Formularvalidierung in Vorlage

Und jetzt möchte ich ein anderes Formular zum Hochladen von Dokumenten machen. Ich fand eine Lösung mit Django-Formen. Also für mich ist es nur eine einfache Klasse:

class DocumentForm(forms.Form): 
    docfile = forms.FileField(
     label='', 
    ) 
    description = forms.CharField(
     label=u'Description:', 
     widget=forms.Textarea(attrs={'rows':4, 'cols':50}), 
    ) 

Ich mag Leeren Scheck Textarea Feld hinzuzufügen. Es besteht die Möglichkeit, im CharField-Konstruktor den Parameter "required" hinzuzufügen. Aber in diesem Fall erlaubt die Seite POST und ich sollte nach "form.is_valid()" zusätzlichen Code schreiben und "form.description.errors" verwenden, um meine Fehlermeldung anzuzeigen. Und ich möchte Verhalten ähnlich meinen anderen Formen. So etwas wie

<textarea name="action" required rows="4" cols="50"></textarea> 

In diesem Fall kann ich nicht einmal POST ohne nicht leere Textarea tun. Und noch wichtiger, ich habe eine Fehleranzeige, wie ich es mag.

Gibt es eine Möglichkeit, solche Form mit Django-Formen zu machen? Gibt es auch eine Möglichkeit, FileField ähnlich zu machen?

Antwort

0

können Sie fügen die required Attribut wie Sie rows oder cols hinzugefügt haben:

class DocumentForm(forms.Form): 
    docfile = forms.FileField(
     label='', 
     required=True, # just in case someone doesn't submit using form 
     widget=forms.ClearableFileInput(attrs={'required': 'required'}), 
    ) 
    description = forms.CharField(
     label=u'Description:', 
     required=True, # just in case someone doesn't submit using form 
     widget=forms.Textarea(attrs={'rows': 4, 'cols': 50, 'required': 'required'}), 
    ) 

Bitte beachten Sie die Verwendung von forms.ClearableFileInput Widget für FileField, weil das ist, was als Standard-Widget für FileField definiert ist.

+0

Danke! Genau das habe ich gebraucht! Gibt es eine Möglichkeit, eine ähnliche In-HTML-Validierung für ein FileField für den Datei-Upload vorzunehmen? – kostr22

+0

Bitte überprüfen Sie die aktualisierte Antwort. – AKS