html模板中的Django分页

Posted

技术标签:

【中文标题】html模板中的Django分页【英文标题】:Django pagination in html template 【发布时间】:2021-02-18 04:48:48 【问题描述】:

我想使用分页,但我不能在 html 中使用。

views.py

def blog_list(request):
    articles = Blogmodel.objects.all()
    page = request.GET.get('page', 1)
    paginator = Paginator(articles, 20)
    

    try:
        page = paginator.page(page)
    except PageNotAnInteger:
        page = paginator.page(1)
    except EmptyPage:
        page = paginator.page(paginator.num_pages)
    args = 'articles':articles,'page':page
    return render(request,'blog.html',args)

html

<nav aria-label="Page navigation example">
  <ul class="pagination">
    <li class="page-item"><a class="page-link" href="#">Previous</a></li>
    <li class="page-item"><a class="page-link" href="#">1</a></li>
    <li class="page-item"><a class="page-link" href="#">2</a></li>
    <li class="page-item"><a class="page-link" href="#">3</a></li>
    <li class="page-item"><a class="page-link" href="#">Next</a></li>
  </ul>
</nav>

谁能帮助我,如何在 html 中做到这一点?

【问题讨论】:

【参考方案1】:

这是来自Corey MS的sn-p。

% if is_paginated %
    % if page_obj.has_previous %
        <a href="?page=1">First</a>
        <a href="?page= page_obj.previous_page_number">Previous</a>
    % endif %

    % for num in page_obj.paginator.page_range %
        % if page_obj.number == num %
            <a href="?page= num "> num </a>
        % elif num > page_obj.number|add:'-3' %
            <a href="?page= num "> num </a>
        % elif num > page_obj.number|add:'3' %
            <a href="?page= num "> num </a>
        % endif %
    % endfor %

    % if page_obj.has_next %
        <a href="?page= page_obj.next_page_number ">Next</a>
        <a href="?page= page_obj.paginator.num_pages">Last</a>
    % endif %
% endif %

【讨论】:

以上是关于html模板中的Django分页的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 模板中显示分页?

4.Django模板语言和分页

Django 模板中的动态分页

Django 模板中的错误:我可以在 if 语句中进行算术运算吗

Django 分页器模板

模板文件 VS. Django中的HTML文件?