利用Django做一个简单的分页页面

views代码:

from django.shortcuts import render
from django.conf import settings
from booktest.models import PicTest,AreaInfo
from django.http import HttpResponse
from django.core.paginator import Paginator
# Create your views here.


# show_upload
def show_upload(request):
    '''显示上传图片页面'''

    return render(request,'booktest/upload_pic.html')


def upload_handle(request):
    '''上传图片处理'''
    pic = request.FILES['pic']

    save_path = '%s/booktest/%s'%(settings.MEDIA_ROOT, pic.name)
    with open(save_path,'wb') as f:
        for content in pic.chunks():
            f.write(content)

    PicTest.objects.create(goods_pic='booktest/%s'%pic.name)

    return  HttpResponse('ok')


# /show_area
def show_area(request,pindex):
    '''分页'''

    areas = AreaInfo.objects.filter(aParent__isnull=True)

    paginator = Paginator(areas,10)
    print(paginator.num_pages)
    print(paginator.page_range)

    if pindex == '':
        # 默认取第一也的内容
        pindex = 1
    else:
        pindex = int(pindex)

    page = paginator.page(pindex)

    return render(request, 'booktest/show_area.html', {'page':page})

templates代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>分页</title>
</head>
<body>
<ul>
    {% for area in page.object_list %}
        <li>{{ area.atitle }}</li>
    {% endfor %}
    
</ul>
{% if page.has_previous %}
    <a href="/show_area{{ page.previous_page_number }}">
    &lt;上一页
    </a>
{% endif %}
{% for foo in page.paginator.page_range %}
    {% if foo == page.number %}
        {{ foo }}
    {% else %}
        <a href="/show_area{{ foo }}">{{ foo }}</a>
    {% endif %}
{% endfor %}
{% if page.has_next %}
    <a href="/show_area{{ page.next_page_number }}">下一页&gt;</a>
{% endif %}
</body>
</html>

猜你喜欢

转载自www.cnblogs.com/xcx-bwt/p/10594045.html