Django开发网页制作靓号管理篇--分页操作(附源代码和各行代码详细解析)

运行界面:

首页:

增添页面:

编辑页面:

详细代码:

首先先在models.py创建一个类,

models.py

class PrettyNumber(models.Model):
    """靓号表"""
    mobile=models.CharField(verbose_name='手机号',max_length=11)
    price=models.IntegerField(verbose_name='价格')
    level_choices=(
    (1,'1级'),
    (2,'2级'),
    (3,'3级'),
    (4,'4级'),
    )
    level=models.SmallIntegerField(verbose_name='级别',choices=level_choices,default=1)
    status_choices=(
    (1,'占用'),
    (2,'未占用')
    )
    status=models.SmallIntegerField(verbose_name='状态',choices=status_choices,default=2)

继续在url中创建一下几个地址:

url.py


    path('number/list/', views.number_list,name='number_list'),
    path('number/add/', views.number_add,name='number_add'),
    path('number/<int:nid>/edit/', views.number_edit,name='number_edit'),
    path('number/<int:nid>/delete/', views.number_delete,name='number_delete')

接下来在views.py中进行代码的编写进行对网页的增删改查


def number_list(request):
    """靓号列表"""
    #搜索框
    data_dict={}
    search_data=request.GET.get('q',"")
    if search_data:
        data_dict['mobile__contains']=search_data

    # for i in range(300):
    #     models.PrettyNumber.objects.create(mobile='1025478962',price=20,level=1,status=1)
    page=int(request.GET.get('page',1))
    page_size=10 #每页的条数
    start=(page-1)*page_size
    end=page_size*page

    queryset=models.PrettyNumber.objects.filter(**data_dict)[start:end]

    # 数据总条数
    total_count = models.PrettyNumber.objects.filter(**data_dict).count()
    #计算总页码
    total_page_count,div=divmod(total_count,page_size)
    if div:
        total_page_count+=1

    #计算出,显示当前的前五页,后五页
    plus=5
    if total_page_count<=2*plus+1:
        #数据库中的数据比较少,小于11页
        start_page=1
        end_page=total_page_count
    else:
        #数据库的数据比较多大于11页

        #当前页小于5时(小极值)
        if page<=plus:
            start_page=1
            end_page=2*plus+1
        else:
            #当前页面大于5
            if (page+plus)>total_page_count:
                start_page=total_page_count-2*plus
                end_page=total_page_count
            else:
                start_page=page-plus
                end_page=page+plus

    #页码
    page_str_list=[]
    #首页
    page_str_list.append('<li><a href="?page={}">首页</a></li>'.format(1))
    #上一页
    if page>1:
        prev='<li><a href="?page={}">上一页</a></li>'.format(page-1)
    else:
        prev='<li ><a href="?page={}">上一页</a></li>'.format(1)
    page_str_list.append(prev)

    #页面
    for i in range(start_page,end_page+1):
        if i==page:
            ele='<li class="active"><a href="?page={}">{}</a></li>'.format(i,i)
        else:
            ele = '<li class=""><a href="?page={}">{}</a></li>'.format(i, i)
        page_str_list.append(ele)


    #下一页
    if page<total_page_count:
        prev='<li><a href="?page={}">下一页</a></li>'.format(page+1)
    else:
        prev='<li ><a href="?page={}">下一页</a></li>'.format(total_page_count)
    page_str_list.append(prev)
    #尾页
    page_str_list.append('<li><a href="?page={}">尾页</a></li>'.format(total_page_count))

    page_string=mark_safe("".join(page_str_list))

    return render(request, 'number_list.html',{'queryset':qu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值