【问题标题】:Django - How to add pagination in detailviewDjango - 如何在详细视图中添加分页
【发布时间】:2019-03-28 22:18:44
【问题描述】:

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

这是我的意见.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 %}

【问题讨论】:

    标签: django pagination django-views


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      在休息时,你几乎做到了。

      More on Django's doc.

      【讨论】:

      • 对不起,如果我问了太多问题。我是 Django 的新手。我已经使用 listview 作为作者列表。一旦我点击一位作者,我就会看到他名下的许多书。使用另一个列表视图只是为他的作品分页可以吗?我该怎么做?
      • 因此,您想要一个作者的“详细视图”,但他的书分页的“列表视图”。有两种方法: 1) 使用DetailView 作为作者页面并手动对他的书进行分页,将其传递给上下文并将其呈现为模板。 2)使用ListView获取分页,但需要覆盖get_queryset并根据url传入的作者返回。并且需要在上下文中添加作者才能在模板中呈现。
      猜你喜欢
      • 2011-09-24
      • 2020-10-30
      • 2019-02-24
      • 2015-01-29
      • 2019-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      相关资源
      最近更新 更多