Бесконечная разбиение на страницы загружает все содержимое страницы на прокрутке
Я пытаюсь реализовать непрерывную пагинацию на свитке с помощью django-endless-pagination.
Первоначальный рендеринг страницы работает нормально. Однако после прокрутки содержимое html-страницы целиком загружается в файл endless_page_template div, а не желаемое частичное содержимое html из файла page_template. В результате получается что-то вроде смотрения в зеркало, которое отражает другое зеркало за ним. Я считаю, что возвращенный queryset является правильным, потому что результаты разбиения на страницы верны, если не пытаться использовать "paginateOnScroll".
Соответствующие части моей точки зрения приведены ниже. Я использую CreateView, потому что у меня есть форма комментариев на той же странице, что и разбитые на страницы комментарии.class MyIndex(CreateView):
form_class = CommentForm
template_name = 'my/index.html'
page_template = 'my/comments.html'
def get_context_data(self, **kwargs):
context = super(MyIndex, self).get_context_data(**kwargs)
context.update({
'comments': Comment.objects.order_by('-id').filter(parent=None),
'page_template': self.page_template,
})
return context
Соответствующие части моего / индекса.html шаблон (основной шаблон)
<script src="{% static 'endless_pagination/js/endless-pagination.js' %}"></script>
<script type="text/javascript">
$.endlessPaginate({
paginateOnScroll: true
});
</script>
<div class="endless_page_template">
{% include page_template %}
</div>
Соответствующие части моих / комментариев.формате HTML (page_template)
{% load endless %}
{% paginate comments %}
{% for comment in comments %}
<span class="lead">{{ comment.name }}</span>
{{ comment.message}}
{% if not forloop.last %}
<hr />
{% endif %}
{% endfor %}
<br />
<div class="row-fluid">
<div class="span8 offset2 pagination-centered">
{% show_more %}
</div>
</div>
Спасибо!
1 ответ:
У меня была та же проблема, и я исправил ее, явно добавив проверку is_ajax в views.py файл, например:
class MyIndex(CreateView): form_class = CommentForm template_name = 'my/index.html' page_template = 'my/comments.html' def get(self, request, *args, **kwargs): if request.is_ajax(): self.template_name = self.page_template return super(MyIndex, self).get(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super(MyIndex, self).get_context_data(**kwargs) context.update({ 'comments': Comment.objects.order_by('-id').filter(parent=None), 'page_template': self.page_template, }) return context
Вам также может потребоваться использовать render/render_to_response вместо возврата метода get по умолчанию, хотя это зависит от того, как структурирована ваша страница.