Django ListView - 分页中的上下链接缺失

1 投票
1 回答
985 浏览
提问于 2025-04-17 22:04

我正在用 Django 做分页功能,使用的是 ListView。一切都按预期工作。但是在模板上没有显示下一页和上一页的链接。

我是不是漏掉了什么?

这是 urls.py 的内容:

from django.conf.urls import patterns, include, url
from django.contrib import admin
from django.views.generic.list import ListView
from demoapp.models import Candidate
admin.autodiscover()

urlpatterns = patterns('',

    url(r'^admin/', include(admin.site.urls)),
    url(r'^test/', ListView.as_view(
                    model=Candidate,
                    paginate_by='10',
                    queryset=Candidate.objects.all(),
                    context_object_name="tasks",                
                    template_name='index.html')),
)

这是 models.py 的内容:

from django.db import models
class Candidate(models.Model):
    name=models.CharField(max_length=255)

还有这是 index.html 的内容:

<ol>
{% for t in tasks %}
<li><p>{{t.name}}</p></li>
{% endfor %}
</ol>
<div class="pagination">
      <ul>
          {% if paginator.has_previous %}
              <li><a href="?page={{ paginator.previous_page_number }}">Previous</a></li>
          {% endif %}
          {% for pg in paginator.page_range %}
              {% if posts.number == pg %}
                  <li class="active"><a href="?page={{ pg }}">{{ pg }}</a></li>
              {% else %}
                  <li><a href="?page={{ pg }}">{{ pg }}</a></li>
              {% endif %}
          {% endfor %}
          {% if paginator.has_next %}
              <li><a href="?page={{ paginator.next_page_number }}">Next</a></li>
          {% endif %}
      </ul>
    </div>

1 个回答

2

什么都没有显示出来,因为Django在视图模板中不知道什么是 paginator

根据文档中的例子,你需要把视图中的 paginator 替换成 tasks -

<div class="pagination">
  <ul>
      {% if tasks.has_previous %}
          <li><a href="?page={{ tasks.previous_page_number }}">Previous</a></li>
      {% endif %}
      {% for pg in tasks.page_range %}
          {% if posts.number == pg %}
              <li class="active"><a href="?page={{ pg }}">{{ pg }}</a></li>
          {% else %}
              <li><a href="?page={{ pg }}">{{ pg }}</a></li>
          {% endif %}
      {% endfor %}
      {% if tasks.has_next %}
          <li><a href="?page={{ tasks.next_page_number }}">Next</a></li>
      {% endif %}
  </ul>
</div>

撰写回答