我有一个用于新闻文章的Django应用程序。我想首先加载6篇文章,当用户滚动浏览它们时,新的6篇文章会自动加载(twitter风格的无限滚动):
我找到了this包,但它已被弃用,所以我按照以下方式执行此操作。
这是观点:
def index(request):
context_dict = {}
articles = Article.objects.order_by('-pub_date')[:6]
context_dict['articles'] = articles
context_dict['title'] = "title "
context_dict['endless_scroll_token'] = '/home/'
return render(request, 'obj_name/index.html', context_dict)
这是java-script / AJAX代码:
<script>
function yHandler(){
var wrap = document.getElementById('body_panel');
var contentHeight = wrap.offsetHeight;
var yOffset = window.pageYOffset;
var y = yOffset + window.innerHeight;
if(y >= contentHeight){
var ourRequest = new XMLHttpRequest();
var token = {{endless_scroll_token}};
if(token == "/home/")
{token = '/';}
ourRequest.open('GET', token);
ourRequest.send();
ourRequest.onload = function(){
var ourData = ourRequest.responseText;
wrap.innerHTML += ourData
};
}
}
window.onscroll = yHandler;
</script>
问题是这样,同样的6篇文章被反复加载。如何每次提取6篇 新 文章?
谢谢!
答案 0 :(得分:1)
它被称为Pagination
页面数据的方法有很多种。 您可以阅读http://www.django-rest-framework.org/api-guide/pagination/
例如,您告诉服务器您想要数据的第2页。 并且您和服务器还需要知道每个页面中包含的项目数。 (这是上面doc中的PageNumberPagination)
我强烈建议您查看Django休息框架,因为它为您提供了许多功能,包括分页。