Фильтр количества неработающих страниц django

У меня есть страница, где будет отображаться информация, которая находится в моей базе данных в виде таблицы, я делаю фильтрацию, чтобы когда список становится очень длинным, по крайней мере, он может быть разделен на разные страницы вместо того, чтобы пользователь прокручивал его, но я пробовал и ничего не вышло, не уверен, правильно ли я делаю или нет.

Это то, что я хотел, как показано на рисунке ниже, но оно не отображается.

enter image description here

ViewMCO.html

views.py

@login_required()
def ViewMCO(request):
    search_post = request.GET.get('q')
    if (search_post is not None) and search_post:
        allusername = Photo.objects.filter(Q(reception__icontains=search_post) | Q(partno__icontains=search_post) | Q(
            Customername__icontains=search_post) | Q(mcoNum__icontains=search_post) | Q(status__icontains=search_post)
                                           | Q(serialno__icontains=search_post))
        if not allusername:
            allusername = Photo.objects.all().order_by("-Datetime")

    else:
        allusername = Photo.objects.all().order_by("-Datetime")
        page = request.GET.get('page', 1)
        paginator = Paginator(allusername, 10)
        try:
            allusername = paginator.page(page)
        except PageNotAnInteger:
            allusername = paginator.page(1)
        except EmptyPage:
            allusername = paginator.page(paginator.num_pages)



    context = {'allusername': allusername}
    return render(request, 'ViewMCO.html', context)

в вашем views.py есть проблема с отступами, и вы должны передать search_post в шаблоне

@login_required()
def ViewMCO(request):
    search_post = request.GET.get('q')
    if (search_post is not None) and search_post:
        allusername = Photo.objects.filter(Q(reception__icontains=search_post) | Q(partno__icontains=search_post) | Q(
            Customername__icontains=search_post) | Q(mcoNum__icontains=search_post) | Q(status__icontains=search_post)
                                           | Q(serialno__icontains=search_post))
        if not allusername:
            allusername = Photo.objects.all().order_by("-Datetime")
        page = request.GET.get('page')
        paginator = Paginator(allusername, 10)
        try:
            allusername = paginator.page(page)
        except PageNotAnInteger:
            allusername = paginator.page(1)
        except EmptyPage:
            allusername = paginator.page(paginator.num_pages)



        context = {'allusername': allusername,'query':search_post}
        return render(request, 'ViewMCO.html', context)
    else:#if search_post is None 
        return redirect('somewhere')
   

и теперь в вашем шаблоне есть над чем поработать.
измените это

 {% if allusername.has_other_pages %}
  <ul class="pagination">
    {% if allusername.has_previous %}
      <li><a href="?page={{ allusername.previous_page_number }}">&laquo;</a></li>
    {% else %}
      <li class="disabled"><span>&laquo;</span></li>
    {% endif %}
    {% for i in allusername.paginator.page_range %}
      {% if allusername.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 allusername.has_next %}
      <li><a href="?page={{ allusername.next_page_number }}">&raquo;</a></li>
    {% else %}
      <li class="disabled"><span>&raquo;</span></li>
    {% endif %}
    </ul>
    {% endif %}

to

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

Что я изменил в пагинации, так это то, что я передал 'query' в шаблоне и использую urlencode.

Вернуться на верх