gpt4 book ai didi

python - 如何在基于类的通用 View 中使用分页?

转载 作者:行者123 更新时间:2023-11-28 23:04:57 24 4
gpt4 key购买 nike

我尝试对基于类的通用 View 实现分页,但我采用的方式是行不通的。

网址

url(r'^cat/(?P<category>[\w+\s]*)/page(?P<page>[0-9]+)/$',
CategorizedPostsView.as_view(), {'paginate_by': 3}),

查看

class CategorizedPostsView(ListView):
template_name = 'categorizedposts.djhtml'
context_object_name = 'post_list'

def get_queryset(self):
cat = unquote(self.kwargs['category'])
category = get_object_or_404(ParentCategory, category=cat)
return category.postpages_set.all()

模板

<div class="pagination">
<span class="step-links">
{% if post_list.has_previous %}
<a href="?page={{ post_list.previous_page_number }}">previous</a>
{% endif %}

<span class="current">
Page {{ post_list.number }} of {{ post_list.paginator.num_pages }}.
</span>

{% if post_list.has_next %}
<a href="?page={{ post_list.next_page_number }}">next</a>
{% endif %}
</span>
</div>

当我尝试获取 http://127.0.0.1:8000/cat/category_name/?page=1 甚至 http://127.0.0.1:8000/cat/category_name/时,我遇到了 404 异常。

如何以正确的方式在基于类的通用 View 中使用分页?

最佳答案

嘿,ListView 已经有一个 kwarg paginate_by,所以只需将其传入即可。尝试这样的事情:

url(r'^cat/(?P<category>[\w+\s]*)/page(?P<page>[0-9]+)/$',
CategorizedPostsView.as_view(paginate_by=3)),

对于您的模板,您可以尝试类似的方法:

{% if is_paginated %}
<div class="pagination">
<span class="step-links">
{% if page_obj.has_previous %}
<a href="?page={{ page_obj.previous_page_number }}">previous</a>
{% endif %}

<span class="current">
Page {{ page_obj.number }} of {{ paginator.num_pages }}.
</span>

{% if page_obj.has_next %}
<a href="?page={{ page_obj.next_page_number }}">next</a>
{% endif %}
</span>
</div>
{% endif %}

关于python - 如何在基于类的通用 View 中使用分页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6884752/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com