如何使用基于Django类的通用ListView分页? [英] How do I use pagination with Django class based generic ListViews?
问题描述
如何在Django 1.3中使用分页?
How do I use pagination with Django 1.3?
文件不是很清楚。
-
什么去我的
views.py
?
我的模板是什么?
我的URLconf文件有哪些?
What goes to my URLconf file?
推荐答案
我想你要求有关使用分页的新视图的信息,因为使用传统的基于功能的视图,很容易找到。我发现只要设置 paginate_by
变量就足以激活分页。请参阅 基于类的通用视图 。
I think you ask for information about using pagination with the new class based views since, with traditional function based views, it is easy to find. I found that just by setting the paginate_by
variable is enough to activate the pagination. See in Class-based generic views.
例如,在视图中。 py
:
import models
from django.views.generic import ListView
class 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
)。
In your template (car_list.html
), you can include a pagination section like this (we have some context variables available: is_paginated
, page_obj
, and 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 }}/" class="see_detail">detail</a></td>
</tr>
{% endfor %}
</table>
{# .... **Now the pagination section** .... #}
{% if is_paginated %}
<div class="pagination">
<span class="page-links">
{% if page_obj.has_previous %}
<a href="/cars?page={{ page_obj.previous_page_number }}">previous</a>
{% endif %}
<span class="page-current">
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 = n
,到URL。
The page to display is indicated by a GET parameter, simply adding ?page=n
, to the URL.
这篇关于如何使用基于Django类的通用ListView分页?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!