|  | 
 
 发表于 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})
 这样就可以正确处理查询参数并进行分页显示了。
 | 
 |