Django FormView vs CreateView

Was ist der Unterschied zwischen Django FormView und CreateView?

Einzige Unterschiede sehe ich, FormView, erfordern ModelForm aber CreateView nicht.

Anders beiden macht dasselbe Objekt anlegen.

InformationsquelleAutor Vaibhav Mule | 2016-04-09



One Reply
  1. 6

    Vom Django-docs:

    FormView:

    Eine Ansicht, die eine form anzeigt. Im Fehlerfall erneut das Formular mit
    Fehler bei der Validierung; auf Erfolg, leitet auf eine neue URL.

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

    CreateView:

    Eine Ansicht, die zeigt ein Formular zum anlegen eines Objekts, die redisplaying
    Formular mit Validierung Fehler (wenn es Sie gibt), und speichern Sie das Objekt.

    Dem alleinigen Zweck, diese Allgemeine Ansicht ist, um Objekte zu erstellen. Aber es ist nicht beschränkt auf die Erstellung von Objekten. Sie können E-Mails von dieser Ansicht zu (genau wie FormView)

    Wenn Ihr FormView erstellt Modell-Objekte, ist es am besten zu verwenden CreateView und nicht die Schaffung einer modelform, das ist, was generische Ansichten sind für, Reduzierung der Wiederholung.

    • Nicht einverstanden mit der beste Wahl, zum Beispiel die meisten der Zeit, die wir nicht wollen, um alle Felder-Modell.
    • dann können Sie einfach schließen Sie nur das Modell Felder, die Sie anzeigen möchten mithilfe der fields Attribut.
    • Was ist mit zusätzlichen Bereich(en) , zum Beispiel Kombination von zwei Modellen, gibt es einige andere use-case-als auch.
    • dann müssen Sie erstellen Sie eine modelform. Ich habe deutlich erwähnt, dass Sie verwenden können, createview ohne modelform für generische Objekte zu erstellen. Wenn Sie wollen, etwas zu tun, was nicht getan createview, können Sie einfach erstellen Sie eine modelform, und überschreiben Sie weitere Methoden des view.
    • Ja das ist richtig, aber meiner Meinung nach funktioniert das am besten über eine andere basiert auf der Verwendung Fall 😉

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.