Django ListView - 分页中的上下链接缺失
我正在用 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>