Django模板中如何使用filter进行分页操作

2023-04-08 00:00:00 模板 分页 如何使用

Django模板中可以使用filter实现分页操作,具体步骤如下:

  1. 在views.py中,使用Django自带的分页组件进行分页,将分页后的结果传递给模板。
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger

def my_view(request):
    obj_list = MyModel.objects.all()
    paginator = Paginator(obj_list, 10) #每页显示10条数据
    page = request.GET.get('page')
    try:
        objs = paginator.page(page)
    except PageNotAnInteger:
        objs = paginator.page(1)
    except EmptyPage:
        objs = paginator.page(paginator.num_pages)
    return render(request, 'my_template.html', {'objs': objs})
  1. 在模板中引入Django自带的分页标签,使用“for...empty”标签展示分页结果。
{% if objs %}
    <ul>
    {% for obj in objs %}
        <li>{{ obj.title }}</li>
    {% empty %}
        <li>No objects found.</li>
    {% endfor %}
    </ul>
    <div class="pagination">
        <span class="step-links">
            {% if objs.has_previous %}
                <a href="?page=1">&laquo; first</a>
                <a href="?page={{ objs.previous_page_number }}">previous</a>
            {% endif %}

            <span class="current-page">
                Page {{ objs.number }} of {{ objs.paginator.num_pages }}.
            </span>

            {% if objs.has_next %}
                <a href="?page={{ objs.next_page_number }}">next</a>
                <a href="?page={{ objs.paginator.num_pages }}">last &raquo;</a>
            {% endif %}
        </span>
    </div>
{% else %}
    <p>No objects found.</p>
{% endif %}
  1. 在分页标签中可以自定义样式和链接。

以上是使用Django模板中filter实现分页操作的详细说明和代码演示。在模板中展示分页结果和标签需要使用Django自带的分页组件和标签,并且可以根据需求自定义样式和链接。

相关文章