Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么我的分页不起作用?(Django)_Python_Html_Django_Python 3.x - Fatal编程技术网

Python 为什么我的分页不起作用?(Django)

Python 为什么我的分页不起作用?(Django),python,html,django,python-3.x,Python,Html,Django,Python 3.x,我一直在使用Django ListView,我在一个类中使用了paginate_py来进行分页。但它只会显示所有项目。这是一节课: class PostListView(ListView): model = publicaciones template_name = 'store/search.html' context_object_name = 'queryset' ordering = ['Promocionado'] paginate_by = 2

我一直在使用Django ListView,我在一个类中使用了
paginate_py
来进行分页。但它只会显示所有项目。这是一节课:

class PostListView(ListView):
    model = publicaciones
    template_name = 'store/search.html'
    context_object_name = 'queryset'
    ordering = ['Promocionado']
    paginate_by = 2

    def get_queryset(self):
        qs = self.model.objects.all().order_by('id')
        search = self.request.GET.get('q')

        if search:
            qs = qs.filter(Título__icontains=search)

        return qs

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        MyFilter = PubFilters(self.request.GET, queryset=self.get_queryset())
        context['filter'] = MyFilter
        context['filtered_items'] = MyFilter.qs
        context['count'] = self.get_queryset().count()
        context['búsqueda'] = self.request.GET.get('q')
        return context
请告诉我是否需要发布其他内容,如filters.py等。提前谢谢

编辑:新回溯:


这是有意义的,因为分页是在
get\u queryset
的结果上完成的,该结果返回一个4元组:
(分页器、页面、对象列表已分页)

从django.http导入QueryDict
类PostListView(ListView):
# …
def获取上下文数据(自身,**kwargs):
context=super()。获取上下文数据(**kwargs)
queryset=self.get_queryset()
MyFilter=PubFilters(self.request.GET,queryset=queryset)
分页器,页面,对象列表,已分页=self.paginate\u queryset(
queryset,
self.get_paginated_by(queryset)
)
querys=self.request.GET.copy()
querys.pop('page',None)
context.update(
filter=MyFilter,
过滤的项目=对象列表,
第页,
已分页=已分页,
count=paginator.count,
查询=查询
)
context['búsqueda']=self.request.GET.GET('q'))
返回上下文
请注意,在指向其他页面的链接中,如果要保留筛选,则需要在请求参数中添加querystring部分,例如:

<a href="?page=2&{{ queries.urlencode|safe }}">

这是有意义的,因为分页是在
get\u queryset
的结果上完成的,它返回一个4元组:
(分页器、页面、对象列表已分页)

从django.http导入QueryDict
类PostListView(ListView):
# …
def获取上下文数据(自身,**kwargs):
context=super()。获取上下文数据(**kwargs)
queryset=self.get_queryset()
MyFilter=PubFilters(self.request.GET,queryset=queryset)
分页器,页面,对象列表,已分页=self.paginate\u queryset(
queryset,
self.get_paginated_by(queryset)
)
querys=self.request.GET.copy()
querys.pop('page',None)
context.update(
filter=MyFilter,
过滤的项目=对象列表,
第页,
已分页=已分页,
count=paginator.count,
查询=查询
)
context['búsqueda']=self.request.GET.GET('q'))
返回上下文
请注意,在指向其他页面的链接中,如果要保留筛选,则需要在请求参数中添加querystring部分,例如:

<a href="?page=2&{{ queries.urlencode|safe }}">

从源代码看这一块从源代码看这一块嗨,谢谢你的回答。self.get_paginate_by()不存在,我认为它是self.get_paginate_by(),它需要一个参数,我在其中写了'queryset',但是我得到了错误'expected string或bytes like object'@marínSchere:你能用完整的回溯编辑这个问题吗?@marínSchere:啊,是的,如果
QueryDict
包含元素,那么就不能将其传递给构造函数。更新了一个补丁。谢谢你,先生!我明白你为什么有这么好的名声了。真的很感谢你嗨,谢谢你的回答。self.get_paginate_by()不存在,我认为它是self.get_paginate_by(),它需要一个参数,我在其中写了'queryset',但是我得到了错误'expected string或bytes like object'@marínSchere:你能用完整的回溯编辑这个问题吗?@marínSchere:啊,是的,如果
QueryDict
包含元素,那么就不能将其传递给构造函数。更新了一个补丁。谢谢你,先生!我明白你为什么有这么好的名声了。真的很感激