python – Django Pagination适用于第一页,不适用于第二页
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Django Pagination适用于第一页,不适用于第二页,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2753字,纯文字阅读大概需要4分钟。
内容图文
![python – Django Pagination适用于第一页,不适用于第二页](/upload/InfoBanner/zyjiaocheng/799/7b343a849bf142d88a8f34136f85a0af.jpg)
我有一个搜索视图,允许用户搜索他们的记录卡,然后显示一次分页6的结果.
我在所有其他视图中使用分页,它可以正常工作.但是,当它与查询一起使用时,它会显示前6个结果,显示“第1页,共2页”和下一个按钮,但是当您单击“下一步”时,您将看不到任何结果.
我将’*’查询设置为search-all,当我搜索该查询时,第一个请求调用是:
http://127.0.0.1:8000/search/?q=*
当我点击下一步时,通话是:
http://127.0.0.1:8000/search/?page=2
搜索网址是:
url(r’^ search /’,’notecard.search.views.search’,name =“search”),
搜索视图是:
@login_required(login_url='/auth/login/')
def search(request):
query = request.GET.get('q', '')
results = []
notecard_list = []
if query:
if query == "*":
results = Notecard.objects.filter(section__semester__user=request.user)
else:
results = Notecard.objects.filter(Q(section__semester__user=request.user), Q(notecard_body__icontains=query)|Q(notecard_name__icontains=query))
paginator = Paginator(results, 6)
try:
page = int(request.GET.get('page', '1'))
except ValueError:
page = 1
try:
notecard_list = paginator.page(page)
except (EmptyPage, InvalidPage):
notecard_list = paginator.page(paginator.num_pages)
return list_detail.object_list(
request,
queryset = Notecard.objects.filter(section__semester__user=request.user),
template_name = "notecards/search.html",
template_object_name = "results",
extra_context = {"results": results, "notecard_list": notecard_list,},
)
并且搜索模板是:
{% extends "base.html" %}
{% block title %} Notecard List | {% endblock %}
{% block content %}
<div id='main'>
<table id='notecards'>
<tr>
<th class="name">Search Results</th>
</tr>
</table>
<table id='known_split'>
<p>Search results:<a class="edit" href="{% url semester_list %}">Back to Semesters</a></p>
{% for result in notecard_list.object_list %}
<tr>
<td class="image">{% if result.known %}<img src="{{ STATIC_URL }}/images/known.png" width="41" height="40" />{% else %}<img src="{{ STATIC_URL }}/images/unknown.png" width="41" height="40" />{% endif %}</td>
<td class="text"><a href="{% url notecards.views.notecard_detail result.id %}">{{ result.notecard_name|truncatewords:9 }}</a></td>
</tr>
{% endfor %}
</table>
<div class="pagination">
<span class="step-links">
{% if notecard_list.has_previous %}
<a class="navlink" href="?page={{ notecard_list.previous_page_number }}">previous</a>
{% endif %}
<span class="current">
Page {{ notecard_list.number }} of {{ notecard_list.paginator.num_pages }}
</span>
{% if notecard_list.has_next %}
<a class="navlink" href="?page={{ notecard_list.next_page_number }}">next</a>
{% endif %}
</span>
</div>
{% endblock %}
正如我所说,我在其他所有视图中成功使用相同的分页,所以我不得不相信这是由于查询的某种原因.
解决方法:
>您没有在第2页的URL中提供q参数(URL应该类似于http://127.0.0.1:8000/search/?q=*\u0026amp;page=2)
>您应该检查基于类的视图(ListView更精确),其中包括pagination
内容总结
以上是互联网集市为您收集整理的python – Django Pagination适用于第一页,不适用于第二页全部内容,希望文章能够帮你解决python – Django Pagination适用于第一页,不适用于第二页所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。