У меня есть 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работы