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数据库为例
currentPage = request.GET.get('page', '')
limit = request.GET.get('limit', '')
subjects = AuthUserDataKeys.objects.all()
paginator = Paginator(subjects, limit)
subject_obj = paginator.page(currentPage)
cou = AuthUserDataKeys.objects.all().count() + 1
obj = list()
for x in range((int(currentPage) - 1) * int(limit) + 1,((int(currentPage) - 1) * int(limit)) +(len(subject_obj) + 1)):
data = ['id', 'ip', 'env', 'username', 'password','port', 'isstatu', 'note']
t = list()
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)
dictionary = dict(zip(data, t))
obj.append(dictionary)
context = {"code": 0, "msg": "获取数据成功","count": cou - 1, "data": obj}
return HttpResponse(json.dumps(context, ensure_ascii=False), content_type='application/json',charset='utf-8')
已知问题
因通过ID获取对应行对象,故数据库行id发生变更会导致异常。
可自行修改,修改逻辑,获取所有行的id值,通过所获取的id值进行获取