Foros del Web » Programando para Internet » Python »

Paginación Django (page_range)

Estas en el tema de Paginación Django (page_range) en el foro de Python en Foros del Web. Hola compañeros, Tengo una consulta sobre el paginador que trae por defecto Django. Actualmente el paginador que tengo lista todo de una sola vez es ...
  #1 (permalink)  
Antiguo 22/10/2012, 17:36
 
Fecha de Ingreso: octubre-2012
Ubicación: Trujillo
Mensajes: 29
Antigüedad: 11 años, 6 meses
Puntos: 6
Paginación Django (page_range)

Hola compañeros, Tengo una consulta sobre el paginador que trae por defecto Django.

Actualmente el paginador que tengo lista todo de una sola vez es decir, tengo 16 paginas:
<< 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 >>

Estuve mirando el *atributo* Pero no he logrado que funcione de la siguiente forma:
*https://docs.djangoproject.com/en/dev/topics/pagination/?from=olddocs#django.core.paginator.Paginator.page _range*

[current_page]
<< [1],2,3,4,5.... 16>>
<< [5],6,7,8,9....16 >>

Código Python:
Ver original
  1. <!-- Next/Prev page links  -->
  2. {% if post and post.paginator.num_pages > 1 %}
  3. <div class="wp-pagenavi">
  4. <span class="step-links">
  5. {% if post.has_previous %}
  6. <a href= "?page={{ post.previous_page_number }}">&lt;&lt; </a>
  7. {% endif %}
  8. <span class="current">
  9. &nbsp;Pagina {{ post.number }} de {{ post.paginator.num_pages }}
  10. </span>
  11. {% for p in post.paginator.page_range %}
  12.   {% if p == post.number %}
  13.   <span class="current">
  14.     {{ p }}
  15.   </span>
  16.   {% else %}
  17.     <a href="?page={{ p }}">{{ p }}</a>
  18.   {% endif %}
  19. {% endfor %}
  20. {% if post.has_next %}
  21. <a href="?page={{ post.next_page_number }}">&gt;&gt;</a>
  22. {% endif %}
  23. </span>
  24. </div>
  25. {% endif %}

Que estoy Haciendo mal¿?
Muchas Gracias,
Saludos.
  #2 (permalink)  
Antiguo 22/10/2012, 19:11
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Paginación Django (page_range)

Por favor también pon la vista, por que no se que le estés enviado.
  #3 (permalink)  
Antiguo 22/10/2012, 20:45
 
Fecha de Ingreso: octubre-2012
Ubicación: Trujillo
Mensajes: 29
Antigüedad: 11 años, 6 meses
Puntos: 6
Respuesta: Paginación Django (page_range)

Cita:
Iniciado por razpeitia Ver Mensaje
Por favor también pon la vista, por que no se que le estés enviado.
Disculpame, aqui lo adjunto:

Código Python:
Ver original
  1. from django.core.paginator import Paginator, InvalidPage, EmptyPage
  2. from xmedia.apps.blog.models import Post
  3. def index_view(request):
  4.     post = Post.objects.all().order_by("-fecha")
  5.     paginador = Paginator(post, 8)
  6.     try :
  7.         page = int(request.GET.get("page", '1'))
  8.     except ValueError:
  9.             page = 1
  10.     try:
  11.         post = paginador.page(page)
  12.     except (InvalidPage, EmptyPage):
  13.         raise Http404()
  14.  
  15.     return render(request, 'home.html', {'post': post,'user':request.user})

Muchas Gracias,
Saludos.
  #4 (permalink)  
Antiguo 23/10/2012, 11:31
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Paginación Django (page_range)

Increíblemente parece que todo lo estas bien, excepto por un pequeño detalle y es que no se que estas recibiendo y que esperas recibir.

Imagina que tiene 4 paginas entonces tu resultado debería ser:
Código HTML:
Ver original
  1. <span class="current">1</span>
  2. <a href="?page=2">2</a>
  3. <a href="?page=3">3</a>
  4. <a href="?page=4">4</a>

¿Cual es el resultado que obtienes?
¿Que es lo que esperas obtener?
¿Esta la URL esta debidamente asociada la vista?
  #5 (permalink)  
Antiguo 23/10/2012, 11:45
 
Fecha de Ingreso: octubre-2012
Ubicación: Trujillo
Mensajes: 29
Antigüedad: 11 años, 6 meses
Puntos: 6
Respuesta: Paginación Django (page_range)

¿Cual es el resultado que obtienes?
¿Que es lo que esperas obtener?
¿Esta la URL esta debidamente asociada la vista?

Gracias, el resultado que se obtiene es como tu lo describes, [1],2,3,4, pero que pasa si tengo 20 resultados? 1,2,3,4,5,6,7,8,9,10.... no van a entrar todos.

La idea seria que se listaran al estilo de la siguiente imagen:



Tal cual como la tenemos esta en la documentación oficial, el problema es que no veo ningún método o atributo que pueda usar para llevar acabo esto.

Muchas Gracias,
Saludos.

Última edición por xcodex; 23/10/2012 a las 11:47 Razón: Agregar Imagen
  #6 (permalink)  
Antiguo 23/10/2012, 13:12
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Paginación Django (page_range)

http://www.tummy.com/Community/Artic...go-pagination/

Esto parece ser un excelente ejemplo de que es lo que buscas.
  #7 (permalink)  
Antiguo 23/10/2012, 13:41
 
Fecha de Ingreso: octubre-2012
Ubicación: Trujillo
Mensajes: 29
Antigüedad: 11 años, 6 meses
Puntos: 6
Respuesta: Paginación Django (page_range)

Cita:
Iniciado por razpeitia Ver Mensaje
[URL="http://www.tummy.com/Community/Articles/django-pagination/"]http://www.tummy.com/Community/Articles/django-pagination/[/URL]

Esto parece ser un excelente ejemplo de que es lo que buscas.
Hola, hace unos dias había leído ese tutoríal, el problema es que esta obsoleto para la versión 1.4, es lo mismo que estamos haciendo con el anterior código publicado.

Saludos.
  #8 (permalink)  
Antiguo 23/10/2012, 17:35
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Paginación Django (page_range)

Ok, mira no se en que partes este obsoleta, yo estoy usando Django 1.4 y python 2.7 y me funciona de maravilla, es mas hice un ejemplo de como usarlo.

https://github.com/razpeitia/Django-Paginator-Example

Solamente clona el repo y esta listo para correr.

Etiquetas: django
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:54.