Django python 基于Layui的分页

Django python 基于Layui的分页

前端代码
table = layui.table;
        table.render({
            elem: '#test-table-autowidth'
            , url: '/api_v1_get_data_keys'
            ,height: 'full-100'
            , cols: [[
                {field: 'id', width: 80, title: '编号', sort: true}
                , {field: 'ip', title: 'IP',align: 'center'}
                , {field: 'env', width: 120,title: '环境',align: 'center'}
                , {field: 'port', title: '端口',align: 'center'}
                , {field: 'isstatu', width: 120,title: '是否可修改', align: 'center'}
                , {field: 'note', title: '备注',align: 'center'}
            ]]
            , page: true
        });
table 表格是不能自动分页的,需要后端代码支持。
page:true 设置后每次点击页,会自动在提交头信息添加/xxxxx?page=1&limit=10

page 和 limit 会更具你的设置进行变更。

所以每一次点击就是一次请求。
后端端代码
假设我们取数据库中的数据可以使用插件paginator
需要引入from django.core.paginator import Paginator
下面以Django admin数据库为例


# 分别获取请求头信息中的page和limit
currentPage = request.GET.get('page', '')
limit = request.GET.get('limit', '')

# 获取数据库所有对象
subjects = AuthUserDataKeys.objects.all()

# 使用Paginator 创建分页对象 limit参数表示以多少条分页
paginator = Paginator(subjects, limit)

# 获取对应页的数据对象 currentPage 参数表示第几页
subject_obj = paginator.page(currentPage)

# 获取数据长度不计算0
cou = AuthUserDataKeys.objects.all().count() + 1
obj = list()
# 循环获取到的数据 
#计算公式 起行(int(currentPage) - 1) * int(limit) + 1
#计算公式 结束行((int(currentPage) - 1) * int(limit)) +(len(subject_obj) + 1)
for x in range((int(currentPage) - 1) * int(limit) + 1,((int(currentPage) - 1) * int(limit)) +(len(subject_obj) + 1)):
    #定义dic key
    data = ['id', 'ip', 'env', 'username', 'password','port', 'isstatu', 'note']
    t = list()
    #根据ID 获取对应行的数据
    ks = AuthUserDataKeys.objects.get(id=x)
    t.append(ks.id)
    t.append(ks.ip)
    t.append(ks.env)
    t.append(ks.username)
    t.append(ks.password)
    t.append(ks.port)
    t.append(ks.isstatu)
    t.append(ks.note)
    # 转化为Key:value
    dictionary = dict(zip(data, t))
    obj.append(dictionary)
    context = {"code": 0, "msg": "获取数据成功","count": cou - 1, "data": obj}
# json 格式返回
return HttpResponse(json.dumps(context, ensure_ascii=False), content_type='application/json',charset='utf-8')
已知问题
因通过ID获取对应行对象,故数据库行id发生变更会导致异常。

可自行修改,修改逻辑,获取所有行的id值,通过所获取的id值进行获取
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值