Préserver les états de cases à cocher sur une même page avec les résultats de la requête

StackOverflow https://stackoverflow.com/questions/1093539

  •  11-09-2019
  •  | 
  •  

Question

J'utilise django, et une page Web statique avec un formulaire GET, et environ 30 cases. L'utilisateur sélectionne différentes boîtes, et clique sur la recherche, et un résultat à partir d'une base de données est retourné à la même page dans un tableau. Cependant, toutes les cases ont été effacées, car HTML est apatride.

Quelle est la solution la plus simple pour se « souvenir » de l'état des cases à cocher? Je l'ai regardé à travers django documents, mais les exemples qui viennent d'utiliser une variable et un IF pour une forme de texte. Certes, je ne dois vérifier si chaque case à cocher est définie dans le QueryDict? En outre, ma forme a été créée sur mesure, plutôt que d'utiliser les formes django.

Finalement, je comptais utiliser JSON pour la page et ne met à jour la table, et cela résoudrait ce problème, mais je ne suis pas sûr si elle introduirait bien d'autres, par exemple retour bouton ne fonctionne pas pour les recherches précédentes.

Était-ce utile?

La solution

"Quelle est la solution la plus simple pour se 'souvenir' de l'état des cases à cocher?"

transactions Web sont apatrides.

Il existe plusieurs façons communes pour mettre en œuvre l'état.

  1. Sessions

    . Si est connecté à votre utilisateur, ils ont une session. Des vêtements de magasin dans leur session. La forme qu'ils se POST dans la session. Cela peut ensuite être récupéré pour poster un nouveau formulaire à eux.

  2. Cookies

    . Sessions utilisent les cookies. Vous pouvez utiliser des cookies manuellement. Vous avez deux choix ici.

    • Mettre les informations de case de formulaire dans le cookie. Envoyez-le vers le bas avec la réponse. Vérifiez que le cookie dans chaque demande si vous savez quoi semer le formulaire.

    • Mettre une clé de session dans le cookie. C'est ce que Django fait pour vous. Ne pas mettre en œuvre vous-même.

  3. Les chaînes de requête dans l'URL. Vous avez les mêmes deux choix comme avec les cookies. Vous pouvez soit effectuer les réglages d'une grande chaîne de vieux base64 ou passer une carte d'identité qui se tient pour la session.

Autres conseils

Il existe des moyens de résoudre le problème de bouton de retour (balises de hachage et ainsi de suite jointes à une URL). Cependant, la façon dont je l'ai toujours accompli cela est par cela. Essentiellement, je passerais les cases à cocher comme un tableau en POST puis, quand vous allez à les faire, juste faire une boucle qui fera toutes les cases dont vous avez besoin, et vérifiez contre POST pour voir si elle a été cochée ou non. A part cela, je ne sais pas.

Utilisation GET? Bien. Accédez aux cases à cocher la même façon d'accéder aux données de textfield.

request.GET [ 'yourfield']

Utilisez staments d'impression pour inspecter les informations disponibles GET.

print request.GET [ 'yourfield']

Si vous utilisez un objet formulaire, alors vous pouvez passer le constructeur de la demande et faire avec elle. Si vous faites manuellement, vous devrez faire quelques finangling à la session.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top