我正在使用Django内置的 Pagination ,并想出如何通过Pagination上的Django文档功能性地使用它。尽管我能够使它与我的应用程序一起工作,但是在文档示例中显示了一部分示例逻辑,我认为在继续之前我很清楚这一点很重要。他们没有那么好解释,我没有在StackOverflow(或互联网)上找到任何其他问题来解决它。
为Django Pagination提供的视图文件示例...
此示例假定已经导入了“联系人”类。
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.shortcuts import render
def listing(request):
contact_list = Contacts.objects.all()
paginator = Paginator(contact_list, 25) # Show 25 contacts per page
page = request.GET.get('page')
try:
contacts = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
contacts = paginator.page(1)
except EmptyPage:
# If page is out of range (e.g. 9999), deliver last page of results.
contacts = paginator.page(paginator.num_pages)
return render(request, 'list.html', {'contacts': contacts})
我想解释的这部分代码(在视图文件中找到)...
page = request.GET.get('page')
('page')
有什么意义?我无法理解。
以下是模板文件(有助于理解......
{% for contact in contacts %}
{# Each "contact" is a Contact model object. #}
{{ contact.full_name|upper }}<br />
...
{% endfor %}
<div class="pagination">
<span class="step-links">
{% if contacts.has_previous %}
<a href="?page={{ contacts.previous_page_number }}">previous</a>
{% endif %}
<span class="current">
Page {{ contacts.number }} of {{ contacts.paginator.num_pages }}.
</span>
{% if contacts.has_next %}
<a href="?page={{ contacts.next_page_number }}">next</a>
{% endif %}
</span>
</div>
答案 0 :(得分:2)
在链接中,您使用page
作为存储页码的变量,例如
<a href="?page={{ contacts.previous_page_number }}">
在渲染模板中,这将类似于
<a href="?page=5">
当用户点击此链接时,page=5
将包含在请求的GET参数中。然后在视图中使用以下内容获取页码:
page = request.GET.get('page')
所选变量page
没有什么特别之处。重要的是request.GET.get()
中使用的字符串与模板中使用的字符串相同。