django的分页组件,在模板中使用

视图函数


from django.core.paginator import Paginator

def
index(request): if request.method=='GET': article_list=models.Article.objects.all().order_by("pk") # 将文章分成每页3篇 paginator=Paginator(article_list,3) current_page=request.GET.get('page',1) current_page=int(current_page) page=paginator.page(current_page) if paginator.num_pages>5: if current_page<=3: page_range=range(1,6) elif current_page+2>=paginator.num_pages: page_range=range(paginator.num_pages-4,paginator.num_pages+1) else: page_range=range(current_page-2,current_page+3) else: page_range=paginator.page_range return render(request,'index.html', {"article_list":article_list,"request":request,"page_range":page_range, "page":page})

模板代码

                <nav aria-label="Page navigation">
                    <ul class="pagination">
                        {% if page.has_previous %}
                            <li>
                                <a href="/index/?page={{ page.previous_page_number }}" aria-label="Previous">
                                    <span aria-hidden="true">&laquo;</span>
                                </a>
                            </li>
                        {% else %}
                            <li class="disabled">
                                <a href="#" aria-label="Previous ">
                                    <span aria-hidden="true">&laquo;</span>
                                </a>
                            </li>
                        {% endif %}

                        {% for num in page_range %}

                            {% if num == current_page %}
                                <li class="item active"><a href="/index/?page={{ num }}">{{ num }}</a></li>
                            {% else %}
                                <li><a href="/index/?page={{ num }}">{{ num }}</a></li>

                            {% endif %}
                        {% endfor %}

                        {% if page.has_next %}
                            <li>
                                <a href="/index/?page={{ page.next_page_number }}" aria-label="Previous">
                                    <span aria-hidden="true">&raquo;</span>
                                </a>
                            </li>
                        {% else %}
                            <li class="disabled">
                                <a href="#" aria-label="Previous ">
                                    <span aria-hidden="true">&raquo;</span>
                                </a>
                            </li>
                        {% endif %}
                    </ul>
                </nav>

 

posted @ 2019-01-27 16:20  Maple_feng  阅读(114)  评论(0)    收藏  举报