Я реализовал ленивую нумерацию при прокрутке в стиле Twitter в своем приложении django, используя Django EL (Endless) Pagination . Кажется, все работает нормально, но загрузка новых элементов идет очень медленно (более 5 se c в наборе запросов, который содержит 5000 записей). Что я могу сделать, чтобы улучшить время загрузки?
Мои views.py
def articles_list(request, template='articles_list.html', page_template='articles.html'):
qs = Article.objects.all().order_by('fb_total_engagement_count')
qs.delete()
form = ArticlesSearchForm(request.GET or None)
if form.is_valid():
api = services.Session()
search_result = api.search(form.cleaned_data['q'])
if not search_result['success']:
form.add_error('q', search_result['message'])
else:
objs = [Article(**art) for art in search_result['articles']]
Article.objects.bulk_create(objs)
context = {
'search_result': qs,
'page_template': page_template,
'total_interactions': qs.aggregate(Sum('fb_total_engagement_count')),
'form': form
}
if request.is_ajax():
template = page_template
return render(request, template, context)
Часть article_list. html:
<div class="row endless_content_wrapper">
{% lazy_paginate search_result %}
{% include page_template %}
</div>
<div class="row">
<div class="col text-center">
{% show_more %}
</div>
</div>
Часть статей . html:
{% if request.is_ajax %}{% lazy_paginate search_result %}{% endif %}
{% for article in search_result %}
...do stuffs
{% endfor %}