所以我尝试使用分页来显示某一天可用的所有匹配类,但是在分页文档之后,每个页面只返回相同的10个结果。我错过了什么/我应该在urlconf中拥有什么?此外,如果我尝试使用分页来显示搜索结果,当我尝试选择下一页时,我收到错误“视图search.views.search_classes没有返回HttpResponse对象”。任何对两个或两个例子的输入都将非常感激。
#views.py
def upcoming_class_list(request, day):
try:
day = int(day)
except ValueError:
raise Http404()
today = datetime.date.today()
day_x = datetime.date.today() + datetime.timedelta(days=day)
day_x_classes = UpcomingClasses.objects.filter(class_date=day_x)
all_matches = day_x_classes
paginator = Paginator(all_matches, 10)
page = request.GET.get('page')
try:
matches = paginator.page(page)
except PageNotAnInteger:
matches = paginator.page(1)
except EmptyPage:
matches = paginator.page(paginator.num_pages)
return render_to_response('preview.html', {'today': today, 'tomorrow': tomorrow,
'past_classes': past_classes, 'day_x': day_x, 'day': day,
'day_x_classes': day_x_classes, 'yesterday': yesterday, 'matches': matches,
'page': page}, context_instance = RequestContext(request))
#urls.py
(r'^upcoming_class_list/plus/(\d{1,2})/$', upcoming_class_list),
#preview.html
<h3>Classes for {{ day_x }}</h3>
{% if matches %}
<div class="pagination">
<span class="step-links">
{% if matches.has_previous %}
<a href="?page={{ matches.previous_page_number }}">« previous </a>
{% endif %}
<span class="current">
Page {{ matches.number }} of {{ matches.paginator.num_pages }}
</span>
{% if matches.has_next %}
<a href="?page={{ matches.next_page_number }}"> next »</a>
{% endif %}
</span>
</div>
{% if day_x_classes %}
<ul type=none>
{% for class in day_x_classes %}
<li>
<ul type=none>
<li><strong>{{ class.type }}</strong></li>
<li>Teacher: <a href="/profiles/{{ class.teacher }}">{{ class.teacher }}</a></li>
<li>Class Description: {{ class.description }}</li>
...
</ul>
</li><br />
{% endfor %}
</ul>
{% endif %}
{% else %}
<p>There are currently no scheduled upcoming classes for {{ day_x }}.</p>
{% endif %}
答案 0 :(得分:1)
来自GET或POST的任何内容都是一个字符串,所以你总是遇到第一个异常。尝试:
try:
matches = paginator.page(int(page))
except (PageNotAnInteger, ValueError):
matches = paginator.page(1)
如果没有看到剩下的观点,就很难猜到问题的其余部分。查看视图中的其他位,您不需要检查白天是否为int,因为您已经确定在带有正则表达式的urls.py文件中,但是don't call the Http404 object,它只是{{1 }}
答案 1 :(得分:0)
好的,所以我想出了我的两个问题的答案。第一部分是因为我在模板中犯了一个愚蠢的错误。视图urlconf是正确的,但在我的模板中,我的for循环声明:
{% for class in day_x_classes %}
我本来应该使用
{% for class in matches %}
因为匹配是分页的,而不是day_x_classes。 至于对我的搜索结果进行分页,我只需要编辑
中的“上一个”和“下一个”按钮<a href="?q={{ query }}&page={{ matches.previous_page_number }}">« previous </a>
这
<a href="?page={{ matches.previous_page_number }}">« previous</a>
考虑q(搜索的术语)。
我希望我的错误能够帮助陷入类似情况的人。