2016-04-09 19 views
4

Was ist der Unterschied zwischen Django FormView und CreateView?Django FormView vs CreateView

Nur diffrence ich sehe, FormView erfordern ModelForm aber CreateView nicht.

Ansonsten macht beides dasselbe, ein Objekt zu erstellen.

Antwort

4

Von Django-docs:

FormView:

Eine Ansicht, die eine Form zeigt. Bei einem Fehler wird das Formular mit Validierungsfehlern erneut angezeigt; Bei Erfolg wird auf eine neue URL umgeleitet.

Es kann für verschiedene Zwecke verwendet werden und ist nicht auf das Erstellen von Objekten beschränkt. Ein schönes Beispiel wäre die Verwendung als Kontaktformular und das Senden von E-Mails ohneErstellen von Datensätzen in der Datenbank.

CreateView:

eine Ansicht, die für die Erstellung von ein Objekt eine Form zeigt, erneutes Anzeigen des Formulars mit Validierungsfehler (falls vorhanden) und das Objekt zu speichern.

Der einzige Zweck dieser generischen Ansicht ist das Erstellen von Objekten. Es ist jedoch nicht auf das Erstellen von Objekten beschränkt. Sie können auch E-Mails von dieser Ansicht senden (genau wie FormView)

Wenn Ihre FormView Modellobjekte erstellt, ist es am besten, CreateView zu verwenden und keine Modellform zu erstellen, dafür werden generische Ansichten verwendet, um Wiederholungen zu reduzieren.

+0

Stimmen Sie nicht mit der besten Auswahl überein, zum Beispiel möchten wir die meiste Zeit nicht alle Modellfelder anzeigen. –

+0

Dann können Sie einfach nur die Modellfelder einschließen, die mit dem Attribut 'fields' angezeigt werden sollen. – v1k45

+0

Was ist mit zusätzlichen Feldern, zum Beispiel Kombination von zwei Modellen, gibt es einige andere Anwendungsfälle. –