如何对基于Django类的通用ListView使用分页?

如何对基于Django类的通用ListView使用分页?,第1张

如何对基于Django类的通用ListView使用分页?

我认为你需要有关将分页与基于新类的视图一起使用的信息,因为使用基于传统函数的视图很容易找到。我发现仅通过设置

paginate_by
变量就足以激活分页。请参见基于类的通用视图。

例如,在你的

views.py

import modelsfrom django.views.generic import ListViewclass CarListView(ListView):    model = models.Car      # shorthand for setting queryset = models.Car.objects.all()    template_name = 'app/car_list.html'  # optional (the default is app_name/modelNameInLowerCase_list.html; which will look into your templates folder for that path and file)    context_object_name = "car_list"    #default is object_list as well as model's_verbose_name_list and/or model's_verbose_name_plural_list, if defined in the model's inner meta class    paginate_by = 10  #and that's it !!

在你的模板(

car_list.html
),你可以包括这样的分页部分(我们有一些情境变量可用:
is_paginated
page_obj
,和
paginator
)。

{# .... **Normal content list, maybe a table** .... #}{% if car_list %}    <table id="cars">        {% for car in car_list %} <tr>     <td>{{ car.model }}</td>     <td>{{ car.year }}</td>     <td><a href="/car/{{ car.id }}/" >detail</a></td> </tr>        {% endfor %}    </table>    {# .... **Now the pagination section** .... #}    {% if is_paginated %}        <div > <span >     {% if page_obj.has_previous %}         <a href="/cars?page={{ page_obj.previous_page_number }}">previous</a>     {% endif %}     <span >         Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.     </span>     {% if page_obj.has_next %}         <a href="/cars?page={{ page_obj.next_page_number }}">next</a>     {% endif %} </span>        </div>    {% endif %}{% else %}    <h3>My Cars</h3>    <p>No cars found!!! :(</p>{% endif %}{# .... **More content, footer, etc.** .... #}

要显示的页面由GET参数指示,只需将?page=nURL 添加到即可。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5004338.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存