我有DetailView我的AJAX分页在哪里。但是我无法在scipt.js中返回JsonResponse。它不会追加下一页数据。因此,当我单击下一步按钮时,它将在控制台中返回错误 my comments。 error
返回JsonResponse({'pag_comments':list(pag_comments),'comment':[评论中的评论]}) TypeError:“ Paginator”对象不可迭代 [03 / Mar / 2019 17:36:06]“ GET / photo / 14 /?page = 2 HTTP / 1.1” 500 14562
我的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即可