Skip to content

Paginação

regiov edited this page Jan 27, 2025 · 1 revision

Quando for necessário usar paginação, deve-se utilizar o mesmo padrão de código usado em outras partes do site para que a aparência, funcionalidade e configuração sejam as mesmas. Nosso widget (template) de paginação funciona como um visor que se desloca entre lotes de páginas da busca. Tomando-se como exemplo um resultado com 21 páginas e um paginador configurado para exibir 5 páginas precisando iniciar na página 6, teríamos a seguinte aparência:

             <<  <  6 7 8 9 10 > >>
              |  |             |  |
vai p/ p.1<---+  +->p.5  p.11<-+  +--->vai p/ p.21

Ou seja:

<<: sempre volta para a primeira página.
< : vai para a página imediatamente anterior.
> : vai para a página imediatamente posterior.
>>: sempre vai para a última página.

A quantidade de registros por página e o tamanho dos lotes de páginas estão atualmente definidos como valores "default" na função "elabora_paginacao_completa" em vol/utils.py.

Para acrescentar paginação a uma determinada busca, utilize o seguinte padrão de código na "view":

from .utils elabora_paginacao_completa

parametros = ''
grupo_paginas_atual = None

qs = MeuModelo.objects.filter(...)

# Paginação
(qs, parametros, grupo_paginas_atual) = elabora_paginacao_completa(request, qs)

context = {'qs': qs,
           'get_params': parametros,
           'grupo_paginas_atual': grupo_paginas_atual}

template = loader.get_template('vol/busca_vagas.html')
return HttpResponse(template.render(context, request))

E acrescente o seguinte template no local em que deseja que apareça a paginação:

{% include "vol/paginador.html" with qs=qs parametros=parametros grupo_paginas_atual=grupo_paginas_atual %}

Clone this wiki locally