Advertisement
Guest User

Untitled

a guest
Jan 12th, 2021
13
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.82 KB | None | 0 0
  1. // views.py
  2.  
  3. class Home(ListView):
  4. model = Post
  5. template_name = 'blog/index.html'
  6. context_object_name = "posts"
  7. paginate_by = 10
  8.  
  9. def get_queryset(self):
  10. return Post.objects.filter(is_book_progress=False).filter(is_published=True)
  11.  
  12. def get_context_data(self, *, object_list=None, **kwargs):
  13. context = super().get_context_data(**kwargs)
  14. context['title'] = 'Главная'
  15.  
  16. context['page_obj'] = Post.objects.all()
  17. paginator = Paginator(context['page_obj'], 1)
  18. page = self.GET.get('page')
  19. try:
  20. context['page_obj'] = paginator.page(page)
  21. except PageNotAnInteger:
  22. context['page_obj'] = paginator.page(1)
  23. except EmptyPage:
  24. context['page_obj'] = paginator.page(paginator.num_pages)
  25.  
  26. return context
  27.  
  28. // paginator.html
  29.  
  30. {% if page_obj.has_other_pages %}
  31. <nav class="paginator">
  32. {% if page_obj.has_previous %}
  33. <a class="arrow left" href="?page=1"><i class="fas fa-angle-double-left"></i></a>
  34. <a class="arrow left" href="?{{ s }}page={{ page_obj.previous_page_number }}"><i class="fas fa-angle-left"></i></a>
  35. {% endif%}
  36. {% for p in page_obj.paginator.page_range %}
  37. {% if page_obj.number == p %}
  38. <a class="page_number active">{{ p }}</a>
  39. {% elif p > page_obj.number|add:-3 and p < page_obj.number|add:3 %}
  40. <a class="page_number" href="?{{ s }}page={{ p }}">{{ p }}</a>
  41. {% endif %}
  42. {% endfor %}
  43. {% if page_obj.has_next %}
  44. <a class="arrow right" href="?{{ s }}page={{ page_obj.next_page_number }}"><i class="fas fa-angle-right"></i></a>
  45. <a class="arrow right" href="?{{ s }}page={{ page_obj.paginator.num_pages }}"><i class="fas fa-angle-double-right"></i></a>
  46. {% endif%}
  47. </nav>
  48. {% endif %}
  49.  
  50. // base.html
  51.  
  52. <script>
  53. function AjaxPagination(){
  54. $("a.page_number").each((index, el) => {
  55. $(el).click((e) => {
  56. e.preventDefault();
  57. let page_url = $(el).attr('href');
  58. console.log(page_url);
  59. $.ajax({
  60. url: page_url,
  61. type: "GET",
  62. sucess: (data) => {
  63. $(".articles").empty();
  64. $(".articles").append($(data).filter(".articles").html());
  65.  
  66. $(".paginator").empty();
  67. $(".paginator").append($(data).filter(".paginator").html());
  68. }
  69. })
  70. });
  71. });
  72. }
  73. $(document).ready(function() {
  74. AjaxPagination();
  75. });
  76. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement