我有一个显示事件列表的模板。准备我正在使用通用视图的事件列表,并设置'paginate_by'参数。奇怪的是,当我加载页面时,我看到:
TemplateSyntaxError at /event/latest/
Caught an exception while rendering: 'int' object is not iterable
在pagination.html模板的第9行:
{% if is_paginated %}
{% load i18n %}
<div class="pagination">
{% if page_obj.has_previous %}
<a href="?page={{ page_obj.previous_page_number }}{{ getvars }}" class="prev"><< Prev</a>
{% else %}
<span class="disabled prev"><< Prev</span>
{% endif %}
#here {% for page in pages %}
{% if page %}
{% ifequal page page_obj.number %}
<span class="current page">{{ page }}</span>
{% else %}
<a href="?page={{ page }}{{ getvars }}" class="page">{{ page }}</a>
{% endifequal %}
{% else %}
...
{% endif %}
{% endfor %}
{% if page_obj.has_next %}
<a href="?page={{ page_obj.next_page_number }}{{ getvars }}" class="next">Next >></a>
{% else %}
<span class="disabled next">Next >></span>
{% endif %}
</div>
{% endif %}
以下是我的观点:
def events_nearest(request):
events = Event.nearest.all()
return object_list(request,
queryset = events,
extra_context = {'title': 'Nearest events'},
paginate_by = 12,
template_name = 'event/events_date.html')
模特:
class NearestManager(models.Manager):
def get_query_set(self):
return super(NearestManager, self).get_query_set().order_by('-data')
class Event(models.Model):
category = models.ForeignKey(Category)
title = models.CharField(max_length=120)
slug = models.SlugField(max_length=255, unique=True, verbose_name='Slug')
about = models.TextField()
city = models.ForeignKey(City)
objects = models.Manager()
nearest = NearestManager()
任何可能导致这种情况的想法?
答案 0 :(得分:2)
pages
变量是页数,它是int,因此错误:'int'对象不可迭代
你应该循环page_range
{% for page in page_range %}
答案 1 :(得分:2)
我遇到了同样的错误。有一张纸条在 https://docs.djangoproject.com/en/dev/topics/pagination/
在Django开发版中更改:以前,您需要使用{% for contact in contacts.object_list %}
,因为Page对象不可迭代。
所以{% for page in pages.object_list %}
可能会解决你的问题。
答案 2 :(得分:2)
对于任何偶然发现这篇文章的人:
与Django 1.4及更高版本一样(据我所知),分页的可迭代对象现在是paginator.page_range
,即for循环应该是
{% for page_num in paginator.page_range %}
答案 3 :(得分:1)
在错误行中#9 {% for page in pages %}
究竟是什么pages
无法在任何地方的代码中看到它。