Frage

Ich bin mit django, und habe eine statische Webseite mit einer GET-Form, und etwa 30 Kontrollkästchen. Der Benutzer wählt verschiedene Boxen, und klickt auf Suche, und ein Ergebnis aus einer Datenbank auf die gleiche Seite in einer Tabelle zurückgegeben. Allerdings sind alle Kontrollkästchen wurden gelöscht, da HTML staatenlos ist.

Was ist die einfachste Lösung zu ‚erinnern‘ den Zustand der Kontrollkästchen? Ich habe durch django docs gesucht, aber die Beispiele verwenden nur eine Variable und eine IF für eine einzelne Textform. Sicher, ich habe prüfen nicht, ob jede Checkbox in der QueryDict gesetzt? Außerdem wurde meine Form benutzerdefinierte erstellt, anstatt django Formen verwenden.

Schließlich war ich die Planung JSON für die Seite zu verwenden und nur die Tabelle aktualisieren, und das würde dieses Problem lösen, aber ich bin nicht sicher, ob es viel mehr, zB Back-Button funktioniert nicht für vorherige Suchen einführen würde.

War es hilfreich?

Lösung

"Was ist die einfachste Lösung zu 'erinnern' den Zustand der Kontrollkästchen?"

Web-Transaktionen sind staatenlos.

Es gibt verschiedene Möglichkeiten, um Zustand zu implementieren.

  1. Sitzungen. Wenn Ihr Benutzer angemeldet ist, haben sie eine Sitzung. Shop Sachen in ihrer Sitzung. Die Form sie Post geht in die Sitzung. Dies kann dann in Reihenfolge abgerufen werden, um eine neue Form zurück, um sich zu veröffentlichen.

  2. Cookies. Sessions verwenden Cookies. Sie können Cookies manuell verwenden. Sie haben zwei Möglichkeiten hier.

    • Setzen Sie das Formular Checkbox Informationen in die Cookie. Senden Sie es mit der Antwort nach unten. Überprüfen Sie, ob das Cookie in jeder Anforderung, so dass Sie wissen, was die Form Saatgut mit.

    • Setzen Sie einen Sitzungsschlüssel im Cookie. Dies ist, was Django für Sie tut. Nicht implementieren diese Texte selbst.

  3. Abfrage-Strings in der URL. Sie haben die gleichen zwei Möglichkeiten, wie mit Cookies. Entweder nehmen Sie die Einstellungen einen großen alten base64 String oder eine ID übergeben, die für die Sitzung steht.

Andere Tipps

Es gibt Möglichkeiten, die Zurück-Taste Ausgabe (Hash-Tags und so weiter an eine URL angehängt) zu beheben. Doch die Art und Weise, die ich dies immer erreicht habe, ist durch nur das. Im Wesentlichen würde ich die Kontrollkästchen als Array in POST übergeben und dann, wenn man sie gehen lassen zu, nur eine Schleife, die alle Boxen müssen Sie machen, und überprüfen gegen POST zu sehen, ob es oder nicht geprüft worden ist. Other than that, ich weiß es nicht.

Mit GET? Gut. Besuchen Sie das Kontrollkästchen auf die gleiche Weise zugreifen Sie Textfeld Daten.

request.GET [ 'yourfield']

Druck staments Verwenden Sie die Informationen in GET zu überprüfen.

Druck request.GET [ 'yourfield']

Wenn Sie ein Formularobjekt verwendet haben, dann könnten Sie einfach den Konstruktor die Anforderung übergeben und mit ihm getan werden. Wenn Sie es manuell tun, werden Sie einige finangling mit der Sitzung zu tun haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top