【问题标题】:how can i show active page in Django pagination如何在 Django 分页中显示活动页面
【发布时间】:2019-04-23 04:44:37
【问题描述】:

我正在使用 django 2.0 并尝试创建此博客,问题是一旦我单击下一页,分页部分中的活动栏不会将平均值从 1 更改为 2,请参阅图片 image

不知道错在哪里

这里是views.py

def post_list(request):
    object_list=Post.objects.filter(status='Published').order_by("-created")
    pages = pagination(request,object_list,3)
    context={
        'items':pages[0],
        'page_range':pages[1],
    }
    return render(request,"blog.html",context)

分页功能

from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator

def pagination(request,data,num=10):
    paginator = Paginator(data,num) # Show 5 contacts per page

    page = request.GET.get('page',5)
    try:
        items=paginator.page(page)
    except PageNotAnInteger:
        items=paginator.page(5)
    except EmptyPage:
        items=paginator.page(paginator.num_pages)
    index=items.number=1
    max_index=len(paginator.page_range)
    start_index=index - 5 if index >= 5 else 0
    end_index=index + 5 if index <= max_index - 5 else max_index
    page_range=paginator.page_range[start_index:end_index]
    return items, page_range

和 pagination.html

<nav>
{% if items.has_other_pages %}
  <ul class="pagination">
    {% if items.has_previous %}
      <li><a href="?page={{ items.previous_page_number }}">&laquo;</a></li>
    {% else %}
      <li class="disabled"><span>&laquo;</span></li>
    {% endif %}
    {% for i in page_range %}
      {% if items.number == i %}
        <li class="active"><span>{{ i }} <span class="sr-only">(current)</span></span></li>
      {% else %}
        <li><a href="?page={{ i }}">{{ i }}</a></li>
      {% endif %}
    {% endfor %}
    {% if items.has_next %}
      <li><a href="?page={{ items.next_page_number }}">&raquo;</a></li>
    {% else %}
      <li class="disabled"><span>&raquo;</span></li>
  </ul>
    {% endif %}
{% endif %}
  </nav>

blog.html

{% for obj in items %}
    {% if obj.status == 'Published' %}
      <article>
        <img src="{{obj.thumb.url}}" alt="" />
        <div class="post-content">
          <h2>{{obj.title}}</h2>
            {{obj.created}}  Author {{obj.user}} <h4><a href="{% url 'category_detail' slug=obj.Category.slug %}">{{obj.Category}}</a></h4>
            <hr/>
            <p>{{obj.body}}</p>
    <a class="mtr-btn button-navy ripple" href= "{% url 'post_detail' obj.slug %}">Continue reading →</a><br>
    </div>
    </article>
    {% endif %}
{% endfor %}
{% include 'pagination.html' %}
</div>

【问题讨论】:

  • index=items.number=1 这一行在做什么?您将 items.number 设置为 1?
  • 是的,我将项目编号设置为 1 不正确或
  • 当然不正确,那是活动页码。在您的模板中,您检查活动页面是否为 == I。
  • 不知道有没有找到你
  • 查看您的代码:items 是您的分页器的 Page 对象。删除= 1 因为items.number 应该是实际的页码。

标签: javascript python jquery html django


【解决方案1】:

从index = items.number = 1 行中删除= 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    • 2019-03-10
    • 2010-12-13
    • 2013-06-08
    • 2017-06-28
    • 2016-04-14
    • 2014-05-16
    相关资源
    最近更新 更多