gpt4 book ai didi

django - 如何将分页与基于 Django 类的通用 ListView 一起使用?

转载 作者:行者123 更新时间:2023-11-28 19:32:17 24 4
gpt4 key购买 nike

如何在 Django 1.3 中使用分页功能?

文档对此不是很清楚。

  • 我的 views.py 有什么用?

  • 什么进入我的模板?

  • 什么进入我的 URLconf 文件?

最佳答案

我想您是在询问有关在新的基于类的 View 中使用分页的信息,因为对于传统的基于函数的 View ,它很容易找到。我发现只需设置 paginate_by 变量就足以激活分页。请参阅 Class-based generic views .

例如,在您的 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_paginatedpage_objpaginator)。

{# .... **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。

关于django - 如何将分页与基于 Django 类的通用 ListView 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5907575/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com