简体   繁体   English

分页器无法在Django中工作

[英]paginator is not working in django

I've followed the official docs to use paginator in Django and it not working, it shows the right page count but on every page, the whole list displayed instead of slicing it into many pages 我已经按照官方文档在Django中使用了分页器,但它无法正常工作,它显示正确的页面数,但是在每一页上,显示的是整个列表,而不是将其分成许多页面

views.py views.py

def home(request):
    current_user = request.user
    all_dress = Item.objects.all().filter(dress_active=True).order_by('-created_at')
    all_good = Item.objects.all().filter(dress_special=True)
    all_name = Name.objects.all()
    all_ads = Ads.objects.all()
    #pig
    paginator = Paginator(all_dress, 3) # Show 12 dress per page
    page = request.GET.get('page')
    dresss = paginator.get_page(page)

    context = {
        'all_dress': all_dress,
        'all_name': all_name,
        'current_user': current_user,
        'all_good':all_good,
        'all_ads':all_ads,
        'dresss':dresss,
    }
    return render(request, 'fostan/index.html',context)

HTML HTML

    <div class="row">
    <div class="col">
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    </div>
    <div class="col">
        <div dir="ltr">
     <div class="pagination" align="left">
    <span class="step-links" align="left">
        {% if dresss.has_previous %}
            <a href="?page=1">&laquo; first </a>
            <a href="?page={{ dresss.previous_page_number }}"> previous</a>
        {% endif %}

        <span class="current">
            Page number {{ dresss.number }} of {{ dresss.paginator.num_pages }}
        </span>
<br>
        {% if dresss.has_next %}
            <a href="?page={{ dresss.next_page_number }}">next </a>
            <a href="?page={{ dresss.paginator.num_pages }}">last  &raquo;</a>
        {% endif %}
    </span>
</div>
    </div>
</div>
    <div class="col">
              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        </div>
    </div>

I have 9 items, and I asked the paginator to show only 3 items per page, the result is 3 pages with the same 9 items on every page! 我有9个项目,我要求分页器每页仅显示3个项目,结果是3页,每页上都有9个项目!

item list 项目清单

  <ul class="thumbnails" >
      {% for dress in all_dress %}
    <li class="span4 pull-left" >
      <div class="thumbnail">
        <a class="zoomTool" href="{% url 'dress_details' dress.pk%}" title="add to cart"><span class="icon-search"></span> عرض التفاصيل</a>
        <a  href="{% url 'dress_details' dress.pk%}"><img class="main" src="{{ dress.dress_image1.url }}" alt=""></a>
        <div class="caption">
          <h5> فستان  {{ dress.dress_name }} </h5>
          <h4>
              <a class="defaultBtn" href="{% url 'dress_details' dress.pk%}" title="إضفط لمشاهدة الفستان"><span class="icon-zoom-in"></span></a>

              <span class="pull-left">{{ dress.dress_price }} جنيه </span>
          </h4>
        </div>
      </div>
    </li>

      {% endfor %}

  </ul>

You should do this way: 您应该这样做:

paginator = Paginator(all_dress, 3)
page = request.GET.get('page')

try:
    dresss = paginator.page(page)
except PageNotAnInteger:
    dresss = paginator.page(1)
except EmptyPage:
    dresss = paginator.page(paginator.num_pages)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM