【问题标题】:Django pagination in ListView raise Error "Slice"ListView中的Django分页引发错误“切片”
【发布时间】:2022-02-01 23:29:24
【问题描述】:

我想在我的页面上显示分页,但我注意到当我添加“paginate_by”时会引发错误“slice”

class BookNotLogged(generic.ListView):
     template_name="BookNotLogged.html"
     context_object_name='listofBook'
     paginate_by = 2 #when i add this its raise me error
     model = Book
     queryset = Book.objects.all()

     def get_queryset(self):
         context={
                'book1':Book.objects.get(id="2"), 
                'book2':Book.objects.get(id="3"),
                'book3':Book.objects.get(id="4"),
                'book4':Book.objects.get(id="8"),
                'book5':Book.objects.get(id="9"),
                'book6':Book.objects.get(id="10"),
                'book7':Book.objects.get(id="11"),
                'book8':Book.objects.get(id="12"),
                'book9':Book.objects.get(id="13") 
         }
    
         return context

【问题讨论】:

  • get_queryset 需要返回一个查询集而不是一个字典。如果您需要额外的上下文数据,您可能想要覆盖 get_context_data

标签: python django django-views pagination


【解决方案1】:

get_queryset 用于返回自定义查询集而不是上下文。要获取上下文,您必须覆盖get_context_data,因此将get_queryset 重命名为get_context_data,如下所示:

class BookNotLogged(generic.ListView):
    # rest of code

    def get_context_data(self, **kwargs):
          context = super().get_context_data(**kwargs)
          context.update({
            'book1':Book.objects.get(id="2"), 
            'book2':Book.objects.get(id="3"),
            'book3':Book.objects.get(id="4"),
            'book4':Book.objects.get(id="8"),
            'book5':Book.objects.get(id="9"),
            'book6':Book.objects.get(id="10"),
            'book7':Book.objects.get(id="11"),
            'book8':Book.objects.get(id="12"),
            'book9':Book.objects.get(id="13"),
         })

        return context

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-04
    • 1970-01-01
    • 1970-01-01
    • 2022-10-05
    • 2021-04-10
    • 2011-07-22
    • 2015-10-20
    • 2011-07-20
    相关资源
    最近更新 更多