我认为你需要有关将分页与基于新类的视图一起使用的信息,因为使用基于传统函数的视图很容易找到。我发现仅通过设置
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 添加到即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)