2009-07-07 21 views
0

Ich entwickle eine generische Anwendung. Angenommen, es handhabt Foo Objekte, die an jedes Modell angeschlossen werden können.django - Formularfehler von einer generischen Anwendungsansicht zurückgeben

{% get_foo_form for object as form %} 

Objekt das Objekt ist, das zu befestigt werden foo:

in einer Vorlage, eine Foo Form kann durch den get_foo_form Template-Tag angezeigt.

Das Formular wird in einer Ansicht in der foos Anwendung angezeigt. Wenn das Formular gültig ist, ist alles in Ordnung. Die neue foo wird gespeichert und die Ansicht wird auf die vorherige Seite umgeleitet (über ein 'nächstes' Argument im Formular versteckt) und die neue foo wird schön angezeigt.

Aber wenn das Formular nicht gültig ist, bin ich verloren. Für den gleichen Fall hat eine ähnliche Anwendung, die django.contrib.comments eine Zwischenseite, die den Benutzer bittet, die Fehler zu korrigieren. Ich möchte jedoch keine Zwischenseite anzeigen, ich möchte die vorherige Seite mit den Fehlern anzeigen. Eine Umleitung ist hier nicht ausreichend, da ich die Fehlermeldung (en) an die vorherige Seite weitergeben muss.

Gibt es eine Möglichkeit zu erreichen, was ich versuche, oder sollte ich die gesamte Struktur ändern?

Antwort

0

Wenn Sie über eine App mit einem generischen Modell verfügen, scheint die Verwendung der Sitzung zum Speichern der Nachrichten und zum Zurückleiten der beste Weg zur Übergabe von Fehlernachrichten an die Buchungsansicht nach der Validierung des Formulars in der Post-Handling-Ansicht.

Danke und +1 zu AlbertoPL für seine Hilfe.

+0

Können Sie uns den Code für das tun, was Sie meinen? Danke! –

2

Alles, was Sie wirklich tun müssen, ist, die Fehlermeldungen zu Ihrem Wörterbuch hinzuzufügen, wenn Sie zu der Seite zurückkehren, auf der Sie waren. Fügen Sie dann in Ihrem HTML-Code if-Tags hinzu, um zu prüfen, ob Fehler vorliegen, und gegebenenfalls die entsprechenden Fehler anzuzeigen.

Sie könnten Ihre Fehlermeldungen in einer Liste speichern und dann als einen der Wörterbuchparameter in einem Aufruf von render_to_response angeben.

+0

@AlbertoPL Die post_foo-Ansicht ruft die Postanforderung ab und prüft, ob das Formular gültig ist. Wenn es gültig ist, speichert foo und leitet zurück zu der Ansicht, die die Datensätze anzeigt. Wenn es nicht gültig ist, muss ich die Fehlervariablen übergeben. Ich kann httpresponseRedirect nicht verwenden, da ich keine Variablen übergeben kann. render_to_response kann auch nicht verwendet werden, da die Post-Ansicht nicht weiß oder sich darum kümmert, was die andere Ansicht (die die Datensätze in der Hauptanwendung anzeigt) tut. – shanyu

+0

oh ok, könnten Sie in diesem Fall eine Funktion in Ihrer anderen Ansicht hinzufügen, die die Post-Ansicht aufrufen kann, um die Fehlermeldungen weiterzugeben? Dann wäre es an dieser Ansicht, die Seite mit diesen Fehlermeldungen zu rendern. – AlbertoPL

+0

Ich würde wirklich schätzen, wenn Sie mir ein Beispiel dafür geben können, was Sie meinen, ich bin mir nicht sicher, ob ich verstehe, was Sie meinen :) – shanyu

Verwandte Themen