2010-01-05 16 views
7

Quiero combinar la paginación con el filtrado. Como tengo muchos filtros, no quiero enviarlos por solicitud GET, ya que las URL se ponen realmente feas.django - la mejor manera de combinar paginación con filtrado y request.POST - como stackoverflow - ajax?

Dado que la paginación django utiliza la solicitud GET para pasar los parámetros de la página, no sé cómo puedo combinar estos dos enfoques.

¿Alguna idea?

El gran complemento sería: ¿Cómo puedo combinar este enfoque con el ordenamiento de tablas? :-)

Editar:

En realidad, debería funcionar como la paginación de stackoverflow - preguntas de los usuarios. Si un usuario hace clic en un número de página, se muestra la página correcta, sin mostrar los parámetros de obtención en la url.

Esta es la url llamada. https://stackoverflow.com/api/userquestions.html?page=2&pagesize=10&userId=237690&sort=Recent

Pero la url que se muestra en el navegador es prolija y corta. Parece ser ajax. ¿Alguien tiene una idea de cómo implementar esto? :)

Si la URL no se muestra en la barra de direcciones del navegador, no me importa si es hermosa o no.

Editar: La solución:

realizar una actualización en Ajax con todos los parámetros de filtro se pasan a la vista. Esto debería ayudarlo a comenzar a implementar ajax para su sitio: link

Por lo tanto, los parámetros GET nunca aparecen en la barra de direcciones.

Respuesta

5

han comprobado la aplicación paginas de Django? que le puede ayudar mucho, lo utilizan todo el tiempo: D

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

+0

Gran aplicación, especialmente porque solo tiene que cambiar algunas cosas en su plantilla. Sin embargo, el parámetro de página aún se procesa como una variable GET.Supongo que perderé mis parámetros de filtro que se envían con POST utilizando este enfoque, como hago al usar la paginación django estándar. –

+2

pero si actualiza solo el bloque que está paginado con ajax, esas URL GET nunca aparecerán en la barra de direcciones :) – Jiaaro

+1

cree una vista personalizada que filtre, luego presente una plantilla que tenga la paginación cargada, solicitará esta vista con AJAX y reemplazar el actual "resultados" div ... no sé si entiendes lo que estoy diciendo, no es muy bueno para explicar :( Publicar cualquier duda – PirosB3

0

me di cuenta de dos soluciones:

  1. En lugar de utilizar simplemente hipervínculos utilizan dentro de un formulario POST, yo no tenga algún ejemplo ahora pero recuerdo que lo he usado para funciones REST en Ruby on rails
  2. Guarde la información de la consulta en una sesión.

Hope this help.

2

¿Has considerado django-tables2? Le da tablas de estilo django-admin sin tener que escribir la lógica usted mismo.

Cuestiones relacionadas