Django模板for循环,每15个项目的新页面

时间:2014-02-13 04:28:10

标签: python django

现在我正在使用结算应用。我有一个自定义设计的结算页面。该页面可以包含15个产品。如果我打印超过15种产品,那将会覆盖到他们的页脚。所以,如果超过15个产品,那么每15个项目创建一个新页面。我怎样才能做到这一点。

我的观点

@login_required    
def print_sale(request,uuid):
    current_sale = Sales.objects.filter(uuid=uuid,deleted=0,shop_id = get_current_shop_id(request)).annotate(total=Sum('sale_products__subtotal'),total_received=Sum('sale_payment__amount'))
    return render_to_response('sales/print.html',{'current_sale':current_sale},context_instance=RequestContext(request))

我的模板

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />        
        <title>print</title>
        {% load static %}
        <link rel="stylesheet" href="{% static 'css/print.css' %}" />
        <script type="text/javascript" src="{% static 'js/print.js' %}"></script>
    </head>
    <body>
        <section class="wrapper">
            {%if current_sale %}
                {% for sale in current_sale %}
                    <section id="top">
                        <section id="bill_details" class="style1">
                            <h2>Bill To :</h2>
                            <p>
                                {{ sale.customer.name }} , {{ sale.customer.email }} , {{sale.customer.mobile}}
                            </p>
                            <p class="address">
                                {{ sale.customer.address }}
                            </p>
                        </section>
                        <div class="right">
                            <p>
                                <b>Date <small>:</small></b>{{ sale.sale_date }}
                            </p>
                            <p>
                                <b>Invoice No<small>:</small></b> #{{ sale.id }}
                            </p>
                        </div>
                        <br class="clear" />
                    </section>              
                    <table>
                        <tr>
                            <th>Code</th>
                            <th>Name</th>
                        </tr>
                        {% for product in sale.sale_products_set.all  %}
                        <tr class="parent">
                            <td>{{ product.product.code }}</td>
                            <td>{{ product.product.name }}</td>
                        </tr>
                        {% endfor %}
                    </table>
                {% endfor %}
            {% endif %}
        </section>
    </body>
</html>

3 个答案:

答案 0 :(得分:1)

如果我理解正确,您可以使用https://docs.djangoproject.com/en/dev/topics/pagination/

答案 1 :(得分:1)

Django为pagination

提供支持

但是,最简单的方法是使用django-pagination应用。

设置完成后,您需要在模板中包含以下内容:

{# At the top of the template #}
{% load pagination_tags %}
{% autopaginate sale.sale_products_set.all 15 %}

{# Your normal template code here #}

{# At the bottom, to show the pagination buttons #}
{% paginate %}

答案 2 :(得分:0)

如果您想要更好地实现更好的分页效果,可以查看django endless pagination Django Endless Pagination可用于提供Twitter风格或Digg风格的分页,可选的Ajax支持以及其他功能,如多重或懒惰分页。