如何从Django视图中提取新对象来实现无休止的滚动?

2024-07-07 09:09:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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脚本/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篇新文章?你知道吗

谢谢!你知道吗


Tags: tokenindextitlerequestvarcontext文章window
1条回答
网友
1楼 · 发布于 2024-07-07 09:09:35

它叫做Pagination

有许多方法可以分页数据。 你可以读http://www.django-rest-framework.org/api-guide/pagination/

例如,您告诉服务器您需要#2页的数据。 您和服务器还需要知道每个页面中包含多少项。(这是上面文档中的PageNumberPagination)

我强烈建议您看看Django rest框架,因为它提供了许多功能,包括分页。你知道吗

相关问题 更多 >