paginator.html 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. {% load helpers %}
  2. <div class="paginator float-end text-end">
  3. {% if paginator.num_pages > 1 %}
  4. <div class="btn-group btn-group-sm mb-3" role="group" aria-label="Pages">
  5. {% if page.has_previous %}
  6. <a href="{% querystring request page=page.previous_page_number %}" class="btn btn-outline-secondary">
  7. <i class="mdi mdi-chevron-double-left"></i>
  8. </a>
  9. {% endif %}
  10. {% for p in page.smart_pages %}
  11. {% if p %}
  12. <a href="{% querystring request page=p %}" class="btn btn-outline-secondary{% if page.number == p %} active{% endif %}">
  13. {{ p }}
  14. </a>
  15. {% else %}
  16. <button type="button" class="btn btn-outline-secondary" disabled>
  17. <span>&hellip;</span>
  18. </button>
  19. {% endif %}
  20. {% endfor %}
  21. {% if page.has_next %}
  22. <a href="{% querystring request page=page.next_page_number %}" class="btn btn-outline-secondary">
  23. <i class="mdi mdi-chevron-double-right"></i>
  24. </a>
  25. {% endif %}
  26. </div>
  27. {% endif %}
  28. <form method="get" class="mb-2">
  29. {% for k, v_list in request.GET.lists %}
  30. {% if k != 'per_page' %}
  31. {% for v in v_list %}
  32. <input type="hidden" name="{{ k }}" value="{{ v }}" />
  33. {% endfor %}
  34. {% endif %}
  35. {% endfor %}
  36. <div class="input-group input-group-sm">
  37. <select name="per_page" class="form-select per-page">
  38. {% for n in settings.PER_PAGE_DEFAULTS %}
  39. <option value="{{ n }}"{% if page.paginator.per_page == n %} selected="selected"{% endif %}>{{ n }}</option>
  40. {% endfor %}
  41. </select>
  42. <label class="input-group-text" for="per_page">Per Page</label>
  43. </div>
  44. </form>
  45. {% if page %}
  46. <small class="text-end text-muted">
  47. Showing {{ page.start_index }}-{{ page.end_index }} of {{ page.paginator.count }}
  48. </small>
  49. {% endif %}
  50. </div>