django分页

django自带分页

2017-07-18  本文已影响0人  赖三石

urls.py

from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/', views.index, name='index'),
]

views.py

# encoding=utf-8
from django.shortcuts import render
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger

def index(request):

    #模拟数据,列表生成式
    a_list = [i for i in range(1, 1003)]

    paginator = Paginator(a_list, 8)  # Show 25 contacts per page
    page = request.GET.get('page')
    try:
        data = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        data = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        data = paginator.page(paginator.num_pages)

    return render(request,'index.html',{
        'data': data
    })

template

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        .active{
            background-color: #1b6d85;
        }
        #ss li{
            float: left;
            display: inline;
            margin-left: 10px;
        }
    </style>
</head>
<body>

<ul>
    {% for d in data %}
        <li>{{ d }}</li>
    {% endfor %}
</ul>

{#{% for i in page %}#}
{#{{ i|safe }}#}
{#{% endfor %}#}
<ul id="ss">
{% if data.has_previous %}
    <li><a href="/index/?page={{ data.previous_page_number }}" >上一页</a></li>
{% endif %}

{% for p_num in data.paginator.page_range %}
    {% if data.number == p_num %}
        <li><a class="active" href="/index/?page={{ p_num }}">{{ p_num }}</a></li>
    {% else %}
        <li><a href="/index/?page={{ p_num }}">{{ p_num }}</a></li>
    {% endif %}
{% endfor %}

{% if data.has_next %}
    <li><a href="/index/?page={{ data.next_page_number }}" >下一页</a></li>
{% endif %}
</ul>
</body>
</html>
上一篇 下一篇

猜你喜欢

热点阅读