7
votes

Django - La meilleure façon de combiner la pagination avec filtrage et demande.post - comme Stackoverflow - Ajax?

Je veux combiner la pagination avec filtrage. Depuis que j'ai beaucoup de filtres, je ne veux pas les envoyer par demande d'obtenir, car les URL deviennent vraiment laids.

Puisque Django Pagination utilise la demande de transmettre les paramètres de page, je ne sais pas comment je peux combiner ces deux approches.

aucune idée?

Un excellent add-on serait: Comment puis-je combiner cette approche avec Table Tri? : -)

EDIT:

En réalité, il devrait fonctionner comme la pagination de Stackoverflow - Questions utilisateur. Si un utilisateur clique sur une page numéro un est affiché la page correcte, sans afficher les paramètres d'obtention de l'URL.

C'est l'URL appelée. https://stackoverflow.com/api/userquestions.html?page=2&pagesize=10&userid= 237690 & Trier = récent

Mais l'URL présentée dans le navigateur est soignée et courte. Semble être ajax. Quelqu'un une idée de la manière de mettre en œuvre cela? :)

Si l'URL n'est pas affichée dans la barre d'adresse du navigateur, je ne me soucie pas de savoir s'il est beau ou non.

Edit: La solution:

Faites une mise à jour AJAX avec tous les paramètres de filtre passés à la vue. Cela devrait vous aider à démarrer avec la mise en œuvre de AJAX pour votre site: lien

Ainsi, les paramètres d'obtention ne se présentent jamais dans la barre d'adresse.


0 commentaires

4 Réponses :


0
votes

1 commentaires

Merci. Je pense que c'est une bonne idée pour 3-5 filtres. Mais j'ai environ 15 ans.



5
votes

Avez-vous vérifié l'application Paginate pour Django? Cela peut vous aider beaucoup, utilisez-le tout le temps: D

http://code.google.com/p/django-pagination/


4 commentaires

Grande application, surtout que vous devez simplement changer certaines choses dans votre modèle. Mais néanmoins, la page param param est toujours traitée comme une variable d'obtention. Je suppose que je perdrais mes paramètres de filtre envoyés avec POST en utilisant cette approche, comme je l'utilise à l'aide de la pagination de Django standard.


Mais si vous rafraîchissez simplement le bloc qui est paginé avec Ajax, ces URL reçoivent n'apparaîtront jamais dans la barre d'adresse :)


Créez une vue personnalisée que les filtres, puis rendent un modèle chargé de pagination, vous demanderez cette vue avec AJAX et remplacerez les "résultats" actuels ... ne savez pas si vous comprenez ce que je dis, pas très bon à expliquer :( Poster des doutes


Oui c'était la solution. Mise à jour de la pièce avec Ajax. Suite à cet exemple devrait amener n'importe qui pour se débarrasser des paramètres UMLY GET dans l'URL :) nomadjourney.com/2009/01/...



0
votes

J'ai compris deux solutions:

  1. Au lieu d'utiliser des liens hypertextes, utilisez-le à l'intérieur d'un poste de post, je n'ai aucun exemple maintenant, mais je me souviens avoir utilisé cela pour des fonctions de repos dans Ruby sur les rails
  2. Enregistrez les informations de la requête dans une session.

    J'espère que cette aide.


0 commentaires

2
votes

Avez-vous considéré comme django-tables2 ? Il vous donne des tables de style Django-admin sans que vous devez écrire vous-même la logique.


0 commentaires