|
发表于 2023-5-9 16:55:05
|
显示全部楼层
这段代码中有一个问题,即在 Cs 类的构造函数中, pagesize 参数被写死为17,而在 viewws 文件中,没有传入 pagesize 参数,因此 Css 类的 self.pagesize 属性始终为17,而不是期望的每页显示的条目数。
要解决这个问题,可以将 Cs 类的构造函数修改为如下代码:
- class Cs(object):
- def __init__(self, request, page="page", pagesize=17):
- page = request.GET.get(page, 1)
- if page.isdecimal():
- page = int(page)
- else:
- page = 1
- self.page = page
- self.pagesize = pagesize
- self.start = (page - 1) * pagesize
- self.end = page * pagesize
复制代码
这里将 pagesize 参数设置为可选参数,并在构造函数中使用 request.GET.get(page, 1) 获取每页显示的条目数,如果没有传入 page 参数,则默认为1。
在 viewws 文件中,将 Css 类的实例化改为:
- css = Cs(request, pagesize=10)
复制代码
这样,每页显示的条目数就是10条,可以根据实际需要进行调整。
另外,在处理查询参数 q 时,也需要对 Css 类进行实例化,并使用实例的 start 和 end 属性来获取分页数据。修改后的代码如下:
- def cs(request):
- css = Cs(request, pagesize=10)
- n = request.GET.get('q')
- if n:
- ss = models.Userinfo.objects.filter(
- Q(id__icontains=n) |
- Q(name__icontains=n) |
- Q(password__icontains=n) |
- Q(age__icontains=n) |
- Q(daa__icontains=n)
- )[css.start:css.end]
- else:
- ss = models.Userinfo.objects.all()[css.start:css.end]
- return render(request, 'hrr.html', {'deat': ss})
复制代码
这样就可以正确处理查询参数并进行分页显示了。 |
|