Джанго Аякс Пагинация - PullRequest
0 голосов
/ 03 марта 2019

У меня есть DetailView, где моя пагинация AJAX. Но я не могу вернуть JsonResponse в моем scipt.js.Он не добавляет данные следующей страницы.Поэтому, когда я нажимаю следующую кнопку, она возвращает ошибку в консоли мои комментарии . ошибка

return JsonResponse ({'pag_comments': список (pag_comments), 'comment': [комментарий для комментария в комментариях]}) TypeError: объект 'Paginator' не являетсяитерируемый [03 / Mar / 2019 17:36:06] "GET / photo / 14 /? page = 2 HTTP / 1.1" 500 14562

my views.py

class PhotoDetailView(DetailView):

queryset = Photo.objects.select_related('user').prefetch_related('comments', 'comments__user', 'likes')
context_object_name = 'photo'
template_name = 'photo_detail.html'

def get_success_url(self):
    return reverse('photo_detail', kwargs={'pk': self.object.pk})

def get_context_data(self, **kwargs):
    context = super(PhotoDetailView, self).get_context_data(**kwargs)
    page = self.request.GET.get('page')
    comments = paginator.Paginator(self.object.comments.all(), 5)
    try:
        pag_comments = comments.page(page)
    except (paginator.PageNotAnInteger, paginator.EmptyPage):
        pag_comments = comments.page(1)
    if self.request.is_ajax():
        return JsonResponse({'pag_comments': list(pag_comments), 'comment': [comment for comment in comments]})

    # context['pag_comments'] = pag_comments
    context['form'] = AddCommentForm(initial={'post': self.object.pk})
    context['is_liked_by_user'] = self.request.user in self.object.likes.all()

    return context

script.js

var showMore = $('.load-more')
showMore.click(function(event){
  event.preventDefault();
  $.ajax({
    url: $(this).attr('href'),
    type: "GET",
    success : function(data){
      $('.row').prepend('' + data["pag_comments"]);
    }
  }) 
})

comments.html

<div class="block-to-be-refreshed">
{% for comment in pag_comments %}
    <p><strong>{{ comment.user }}</strong> {{ comment.text }}</p>
{% endfor %}
</div>
<div class="row">

</div>
<div class="pagination">
  <span class="step-links">
    {% if pag_comments.has_next %}
        <a href="?page={{ pag_comments.next_page_number }}" class="load-more">next</a>

    {% endif %}
 </span>
</div>

без AJAX itработы

...