TemplateView 是不是支持分页?
Posted
技术标签:
【中文标题】TemplateView 是不是支持分页?【英文标题】:Does TemplateView supports pagination?TemplateView 是否支持分页? 【发布时间】:2021-03-01 13:07:30 【问题描述】:如何使用 Templateview 实现分页?下面的视图是基于类的视图,我使用 Templateview 列出网络(我从另一个应用程序的 api 调用)。这里我没有使用模型,所以我不能使用 Listview,因为我没有查询集。
class classView(TemplateView):
template_name = 'view_network.html'
# paginate_by = 5
context_object_name = 'networks'
paginator = Paginator('networks', 5)
def get_context_data(self, **kwargs):
...
...
return context
在 html 页面中我添加了这个:
<span class="step-links" style="margin-left: 30%;
margin-bottom: 0px;
margin-top: 0px;
width: 100%;">
<div style="text-align: justify"></div>
<table style="width: 50%">
<tr>
% if page_obj.has_previous %
<td><a href="?page=1">« First</a></td>
<td> <a href="?page= page_obj.previous_page_number ">Previous</a></td>
% endif %
<td> Page page_obj.number of page_obj.paginator.num_pages .</td>
% if page_obj.has_next %
<td><a href="?page= page_obj.next_page_number ">Next</a></td>
<td><a href="?page= page_obj.paginator.num_pages ">Last »</a></td>
% endif %
</tr>
</table>
</div>
</span>
</div>
【问题讨论】:
【参考方案1】:TemplateView 不支持分页,您必须使用 ListView 才能使用“paginate_by = 5”Here 是检查每个基于类的通用视图的所有属性/方法的有用链接。
【讨论】:
这里不能使用 ListView。【参考方案2】:您可以在get_context_data()
函数中实现分页。假设networks
是一个对象列表。
def get_context_data(self, **kwargs):
page_size = 5
paginator = Paginator(networks, page_size)
page = request.GET.get('page', 1)
page_obj = paginator.page(page)
context =
"page_obj": page_obj
【讨论】:
页面在变化,但所有页面的数据相同。以上是关于TemplateView 是不是支持分页?的主要内容,如果未能解决你的问题,请参考以下文章
Handsontable 是不是支持像 jqgrid 这样的服务器端分页?
在类 Index(TemplateView) 中使用 request.user