You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django模板中依次展示多组数据并自定义页码?

Django模板自定义多组数据打印页码实现方案

核心思路

要实现多组数据对应自定义连续页码,需要在视图层先完成数据分页与页码起始值计算,再在模板层结合分页数据渲染对应页码,同时用CSS控制打印时的分页逻辑。


1. 视图层处理(计算分页与起始页码)

用Django内置的Paginator对两组数据分别分页,同时计算第二组数据的起始页码(第一组总页数+1),最后将分页对象和起始页码传入模板上下文。

from django.core.paginator import Paginator
from django.shortcuts import render

def your_view(request):
    # 替换为实际业务中获取balances、price数据的逻辑
    balances = ...  
    price_list = ...  # 注意变量名避开模板循环变量,避免冲突

    # 配置每页显示条数(根据实际需求调整)
    per_page = 1
    # 对两组数据分别分页
    balance_paginator = Paginator(balances, per_page)
    price_paginator = Paginator(price_list, per_page)

    # 定义每组数据的起始页码
    balance_start_page = 1
    price_start_page = balance_paginator.num_pages + 1  # 接在balances的页码之后

    context = {
        'balance_paginator': balance_paginator,
        'price_paginator': price_paginator,
        'balance_start_page': balance_start_page,
        'price_start_page': price_start_page,
    }
    return render(request, 'your_template.html', context)

2. 模板层渲染(显示自定义页码+控制打印分页)

通过遍历分页对象的页码范围,渲染每页数据并计算当前自定义页码,同时用CSS的page-break-after控制打印时每页自动断开。

<style>
/* 打印时的分页样式 */
@media print {
    .print-page {
        page-break-after: always;
    }
    /* 最后一页不需要分页符 */
    .print-page:last-child {
        page-break-after: avoid;
    }
}
</style>

<!-- 渲染balances数据,对应页码1-4 -->
{% for page_num in balance_paginator.page_range %}
    <div class="print-page">
        <p>当前页码: {{ balance_start_page | add:page_num | add:-1 }}</p>
        {% for balance in balance_paginator.page(page_num) %}
            <p>{{ balance.amount }}</p>
        {% endfor %}
    </div>
{% endfor %}

<!-- 渲染price数据,对应页码5-7 -->
{% for page_num in price_paginator.page_range %}
    <div class="print-page">
        <p>当前页码: {{ price_start_page | add:page_num | add:-1 }}</p>
        {% for price in price_paginator.page(page_num) %}
            <p>{{ price.amount }}</p>
        {% endfor %}
    </div>
{% endfor %}

关键注意点

  • 变量名冲突:原代码中price同时作为数据集变量和循环变量,建议重命名数据集为price_list避免混淆;
  • 页码计算:page_num从1开始,所以需要用起始页码 + page_num -1得到正确的自定义页码;
  • 分页灵活性:如果需要调整每页显示条数,只需要修改视图中的per_page参数即可。

内容的提问来源于stack exchange,提问作者Anoop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 01:54:14