【问题标题】:How to implement end less pagination in Django如何在 Django 中实现无结束分页
【发布时间】:2016-04-01 13:58:05
【问题描述】:

我正在尝试在 Django App 中实现 end less 分页,但一直停留在如何实现 twitter 之类的 endless 滚动:

我的模型.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)

我的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>

{% 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>

我的 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>

如果我使用tutorial 中给出的{{ block.super }},我首先面临两个问题。Django 给出此错误'BlockNode' object has no attribute 'context',如果我删除{{ block.super }}。我通过下一个和上一个功能获得简单的分页。

谁能帮帮我。我想实现滚动加载分页...

【问题讨论】:

  • 我的 JavaScript 控制台显示此错误 Uncaught TypeError: Object [object Object] has no method 'on'

标签: python django django-endless-pagination


【解决方案1】:

请试用我的代码:

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" %}

试试并告诉我...然后在您的数据库中输入 20-30 个条目以正确检查...

【讨论】:

    【解决方案2】:

    在调用{{block.super}}之前,您必须包含page_template

    <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 %}
    

    【讨论】:

    猜你喜欢
    • 2021-11-25
    • 1970-01-01
    • 2015-04-30
    • 2020-05-01
    • 1970-01-01
    • 2019-08-06
    • 2011-02-25
    • 2017-03-07
    • 2021-07-11
    相关资源
    最近更新 更多