How to implement end less pagination in Django

匿名 (未验证) 提交于 2019-12-03 01:41:02

问题:

I am trying to implement end less pagination in Django App but stuck at how to implement twitter like end less scrolling :

My models.py

from django.db import models from django.contrib import admin #------------------------------------------------------------------------------   class Book(models.Model):     name = models.CharField(max_length=50)     pub_date = models.DateField(auto_now_add=True)   class bookAdmin(admin.ModelAdmin):     """Book admin class"""      list_display = ('name','pub_date')      ordering = ('name',)   admin.site.register(Book,bookAdmin) 

My views.py :

from models import Book from django.template import RequestContext  from django.shortcuts import render_to_response  #------------------------------------------------------------------------------    def latest_books(request,template = 'latest_books.html',                   page_template = 'latest_books_page.html' ):      context = {}         book_list = Book.objects.order_by('-pub_date')      context.update( {'book_list': book_list, 'page_template': page_template,} )      # override the template and use the 'page' style instead.     if request.is_ajax():         template = page_template      return render_to_response(         template, context, context_instance=RequestContext(request) ) 

My 'latest_books.html' template :

<html><head><title>Books</title></head>  <body> <h1>Books</h1>  {% block js %} {{ block.super }} <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.2.min.js" type="text/javascript" charset="utf-8"></script>  <script type="text/javascript" src="http://yourjavascript.com/337923491/endless.js" charset="utf-8"></script> <script type="text/javascript" src="http://yourjavascript.com/151379951/endless-pagination.js"></script> <script>$.endlessPaginate();</script> {% endblock %}  {% block content %} <div class="endless_page_template"> {% include page_template %} </div> {% endblock %}  </body></html> 

My latest_books_page.html :

<h2>Viewing All Entries</h2>  {% load endless %} <div> <ul> {% paginate book_list %} {% for book in book_list %} <li>{{ book.name }}</li> {{ book.pub_date }} {% endfor %} {% show_pages %} </ul> </div> 

I am facing two issues first if i use {{ block.super }} as given in tutorial .Django gives this error 'BlockNode' object has no attribute 'context' and if i remove {{ block.super }}. I get simple pagination with next and previous functionality .

Can someone help me please. I want to implement on scroll load pagination...

回答1:

Please try out my code:

views.py :

from models import Book from django.template import RequestContext  from django.shortcuts import render_to_response  #------------------------------------------------------------------------------    def latest_books(request,template = 'latest_books.html',                   page_template = 'latest_books_page.html' ):      context = {}         book_list = Book.objects.order_by('-pub_date')      context.update( {'book_list': book_list, 'page_template': page_template,} )      # override the template and use the 'page' style instead.     if request.is_ajax():         template = page_template      return render_to_response(         template, context, context_instance=RequestContext(request) ) 

latest_books.html :

<html><head><title>Books</title></head>  <body>  <h1>Books</h1> <h2>Viewing All Entries</h2>  <div class="endless_page_template">     {% include page_template %} </div>  {% block js %} <script src="http://code.jquery.com/jquery-latest.js"></script>  <script src="{{ STATIC_URL }}js/endless_on_scroll.js"></script> <script src="{{ STATIC_URL }}js/endless-pagination.js"></script>     <script>     $.endlessPaginate({paginateOnScroll: true,     endless_on_scroll_margin : 10,     paginateOnScrollChunkSize: 5         });</script> {% endblock %}   </body></html> 

latest_books_page.html :

{% load endless %} {% paginate 10 book_list %} {% for book in book_list %} {{ book.name }}<br> {{ book.pub_date }}<br><br><br> {% endfor %} {% show_more "even more" "working" %} 

Try out and let me know ... and enter 20-30 entries into your DB to check it out properly ...



回答2:

You have to include page_template before call the {{block.super}}

<h2>Entries:</h2> {% include page_template %}  {% block js %}     {{ block.super }}     <script src="http://code.jquery.com/jquery-latest.js"></script>     <script src="{{ STATIC_URL }}endless_pagination/js/endless-pagination.js"></script>     <script>$.endlessPaginate();</script> {% endblock %} 


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!