Я пытаюсь использовать Django Endless Pagination, чтобы добиться эффекта pg страницы разбиения на страницы в формате Twitter/Instagram, когда пользователь прокручивается в нижней части страницы, затем новое содержимое загружается на страницу. Используя вышеописанный модуль, я смог это сделать. Однако у меня есть вопрос, связанный с производительностью. Вид, откуда я отправляю данные, все еще загружает все строки из базы данных. Только на стороне шаблона отображается часть его.Django Lazy Loading Pagination
class IndexView(BaseAjaxViewList):
template_name = 'polls/index.html'
page_template = 'polls/item_index.html'
context_object_name = 'data'
model = Question
def get_context_data(self,**kwargs):
context = super(IndexView, self).get_context_data(**kwargs)
print(len(context["data"]))
return context
Я думал, что только «п» число элементов будет доступ из базы данных, и когда прокрутки произойдет там будет еще один вызов дб и так далее, что может улучшить производительность загрузки страницы. Предположим, что на странице 1000 элементов, тогда в идеале я хотел бы, скажем, 50 элементов для загрузки сначала (50 элементов для доступа к вызову 1 дБ), а затем, когда пользователь прокручивается и доходит до нижней части страницы, а затем 50 элементы должны быть доступны и отображены. Тем не менее, я пытался проверить под сценой, и кажется, что все 1000 звонков выполняются сразу с использованием этого модуля. Только со стороны шаблона одновременно отображаются 50. Это правда? Есть ли какой-нибудь модуль django, который сделает это, или мне придется писать собственные вызовы ajax и т. Д.?
Шаблоны для справки ниже:
Главный шаблон
<h2>Polls:</h2>
{% include page_template %}
{% block js %}
{{ block.super }}
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="{% static 'endless_pagination/js/endless-pagination.js' %}"></script>
<script>$.endlessPaginate();</script>
{% endblock %}
page_template
:
{% load endless %}
{% paginate entries %}
{% for entry in entries %}
{# your code to show the entry #}
{% endfor %}
{% show_more %}
В идеале вы должны написать свой запрос db таким образом, чтобы вы извлекали все элементы, которые необходимо просматривать с помощью одного вызова. Следующая ситуация: (50 пунктов для доступа/вызовы 50 дБ) _ - кошмарный сценарий! – Alexander
@alex Извините. Внедрение предложения было неправильным. Я делаю вызов 1 дБ, чтобы получить, скажем, 500 пунктов. Однако, как только я получу 500 штук, я много обрабатываю их. Это занимает время, и, следовательно, страница медленно загружается. То, что я хочу, это то, что в вызове 1 дБ получите 50 элементов, обработайте их, отправьте их в шаблон. Затем, как только пользователь прокручивается до нижней части html-страницы, я делаю другой вызов db, чтобы получить следующие 50 элементов, обработать их и отправить обратно в шаблон. Надеюсь, теперь я поняла. – Why