terça-feira, 11 de janeiro de 2011

Paginando Resultados com Django Pagination

Nada de limit, top. Não iremos usar nem o slice na view e não será necessário nem criar controles para pegar a página atual, a anterior controlar parametros já enviados de busca.

Como? Django Pagination.

Basta pegar o projeto disponibilizado aqui (http://code.google.com/p/django-pagination/)  colocá-lo na raiz do seu projeto.

No arquivo settings.py poucas alterações:

  • Adicione o Pagination a tupla INSTALLED_APPS:
    • ...
      'pagination',
      ...
  • Adicione o Middleware do Pagination à tupla MIDDLEWARE_CLASSES:
    • ...
      'pagination.middleware.PaginationMiddleware',
      ...
  • E por sim no template, onde quiser paginar os resultados basta seguir a seguintes alterações:
    • Carregue o template_tags do Pagination:
      • {% load pagination_tags %}
    • Defina logo acima do "for" que correrá todos os resultados obtidos na view a seguinte linha, substituindo com as devidas informações:
      • {% autopaginate <SUA_QUERY_SET> <NRO_REGISTROS_POR_PAG> %}
    • Para os botões de contre, adicone o código a seguir:
      • {% paginate %}
Lembre-se de não filtrar os resultados na sua view, pra que o trabalho se tem algo eficiente que faz por você? 

hasta!

Um comentário: