Django-如何在detailview中添加分页

时间:2019-03-28 13:38:22

标签: django pagination django-views

我是一名学生,刚接触django。如何在详细类视图中添加分页?

这是我的views.py

class AuthorDetailView(NeverCacheMixin, generic.DetailView):
model = Author
paginate_by = 1

和我使用的分页代码不起作用。

{% if is_paginated %}

          {% if page_obj.has_previous %}
            <a class="btn btn-outline-dark mb-4" href="?page={{ page_obj.previous_page_number }}">Previous</a>
          {% endif %}

          {% for num in page_obj.paginator.page_range %}
            {% if page_obj.number == num %}
              <a class="btn btn-dark mb-4" href="?page={{ num }}">{{ num }}</a>
            {% elif num > page_obj.number|add:'-3' and num < page_obj.number|add:'3' %}
              <a class="btn btn-outline-dark mb-4" href="?page={{ num }}">{{ num }}</a>
            {% endif %}
          {% endfor %}

          {% if page_obj.has_next %}
            <a class="btn btn-outline-dark mb-4" href="?page={{ page_obj.next_page_number }}">Next</a>
          {% endif %}

            {% endif %}

2 个答案:

答案 0 :(得分:0)

您应该继承ListView而不是DetailView,并重写get_queryset以从合作伙伴那里获取讲座。如果需要,也可以在get_context_data中添加Partner对象。

答案 1 :(得分:0)

您的问题在模板{% if is_paginated %}的第一行:您似乎没有将此变量传递到模板的上下文中。参见Paginator docs

还有另一件事:generic.DetailView中没有“包含分页”,您应该使用ListView

休息时,您几乎已经钉上钉子。

More on Django's doc