-
Notifications
You must be signed in to change notification settings - Fork 13
Paginação
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 %}