Se eu tiver 100 páginas, irá mostrar do número 1 ao 100 ? Se sim, como eu faço pra mostrar exemplo: 1 2 3...43..98 99 100 Não precisa ser exatamente assim, mas alguma forma de não mostrar o número 1 ao 100.
Se eu tiver 100 páginas, irá mostrar do número 1 ao 100 ? Se sim, como eu faço pra mostrar exemplo: 1 2 3...43..98 99 100 Não precisa ser exatamente assim, mas alguma forma de não mostrar o número 1 ao 100.
Olá Giulliano, tudo bem com você?
Peço desculpas pela demora no retorno.
Para limitarmos o número de páginas que serão apresentadas caso a aplicação tenha múltiplas receitas salvas, será necessário realizar a modificação da lógica presente no arquivo templates/receita/index.html responsável por definir a apresentação das páginas na nossa aplicação.
Localize a tag <section class="top-catagory-area section-padding-20-0">
que contém a lógica de apresentação das páginas e substitua seu conteúdo pelo conteúdo disponível abaixo:
<div class="container">
{% if receitas.has_other_pages %}
<ul class="pagination">
{% if receitas.has_previous %}
<li class="page-item">
<a href="?page={{ receitas.previous_page_number }}" class="page-link">«</a>
</li>
{% else %}
<li class="page-item disabled">
<a class="page-link">«</a>
</li>
{% endif %}
{% with start_page=receitas.number|add:'-1' %}
{% with end_page=receitas.number|add:'1' %}
{% for page_num in receitas.paginator.page_range %}
{% if page_num == receitas.number %}
<li class="page-item active">
<a class="page-link">{{ page_num }}</a>
</li>
{% elif page_num >= start_page and page_num <= end_page %}
<li class="page-item">
<a href="?page={{ page_num }}" class="page-link">{{ page_num }}</a>
</li>
{% endif %}
{% endfor %}
{% endwith %}
{% endwith %}
{% if receitas.has_next %}
<li class="page-item">
<a href="?page={{ receitas.next_page_number }}" class="page-link">»</a>
</li>
{% else %}
<li class="page-item disabled">
<a class="page-link">»</a>
</li>
{% endif %}
</ul>
<!-- Tag responsável por apresentar a quantidade total de receitas -->
<p>Total de Receitas: {{receitas.paginator.count}}</p>
{% endif %}
</div>
No código acima, a lista de itens é armazenada em uma variável chamada receita. Em seguida, a lista é dividida em páginas usando o Paginator do Django, onde cada página terá no máximo 3 itens.
O trecho with start_page=receitas.number|add:'-1'
cria uma variável start_page
que guarda o valor da página inicial do intervalo a ser exibido. Já o trecho with end_page=receitas.number|add:'1'
cria uma variável end_page
que guarda o valor da última página do intervalo a ser exibido.
Por fim, o trecho {% for page_num in receitas.paginator.page_range %}
itera sobre todas as páginas da lista. Se a página estiver no intervalo definido pelas variáveis start_page
e end_page
, o link para a página é criado. Caso contrário, o link não é exibido.
GIF contendo o resultado
Após as mudanças aplicadas salve o arquivo templates/receita/index.html e inicie a aplicação Django e verifique o número de links de páginas exibidos. Importante: O código foi testado em conjunto com o código da aula e dependendo da configuração da sua aplicação, será necessário realizar a adição de múltiplas receitas para que seja criado mais de 3 páginas e assim exibir o resultado.
Abraços e bons estudos!