【问题标题】:Django class based view pagination基于 Django 类的视图分页
【发布时间】:2017-05-08 21:55:00
【问题描述】:

嗨,我想对查询集(讲座)进行分页。我试过了。但它不起作用 我能怎么做?

类 tag_detail(查看): def get(self, request, pk): tag_hit = get_object_or_404(TagModel, id=pk) tag_hit.view_cnt = tag_hit.view_cnt + 1 tag_hit.save() 标签 = TagModel.objects.get(id=pk) Lectures_data = LectureModel.objects.filter(tags__id=pk).order_by('-id') 分页器=分页器(讲座数据,2) page = request.GET.get('page') 尝试: 讲座 = paginator.page(page) 除了 PageNotAnInteger: 讲座 = paginator.page(1) 除了空页: 讲座 = paginator.page(paginator.num_pages) 返回渲染(请求,'web/html/tag/tag_detail.html',{ “讲座”:讲座 “标签”:标签 })

【问题讨论】:

  • 是否有错误或表明它不起作用的东西?
  • 它只是说“发生服务器错误。请联系管理员。”
  • 你应该将DEBUG设置为true当.. uhm.. 调试

标签: python django django-generic-views


【解决方案1】:

只需将其设为ListView,您就不必担心它是如何工作的,因为paginate_by 为您设置了分页

class tag_detail(ListView):  # TagDetailListView would be a better name
    paginate_by = 2
    template_name = 'web/html/tag/tag_detail.html'
    model = LectureModel
    ordering = '-id'
    context_object_name = 'lectures'

    def  get_queryset(self):
        return LectureModel.objects.filter(tags__id=self.kwargs['pk'])

【讨论】:

  • 非常感谢但我可以通过 ListView 进行分页。我想用'View'还有其他办法解决吗?
  • @JungYoonKim - 我不知道,您还没有告诉我们您遇到的什么错误。虽然如果列表视图有效,您需要 View 做什么?
  • 实际上我和我的同事一起工作,他运行开发服务器,但他现在没有响应。所以我不知道我得到了什么错误。实在抱歉。我将代码编辑为完整代码。有什么方法可以将我的 View 转换为 ListView?
  • @JungYoonKim - 你的意思是你不能运行本地开发副本?没有设置任何日志记录来在某处输出这些错误?反正你根本无法更改代码?...
猜你喜欢
  • 2014-10-12
  • 1970-01-01
  • 2019-09-24
  • 1970-01-01
  • 2019-02-07
  • 1970-01-01
  • 1970-01-01
  • 2016-03-20
  • 2014-02-16
相关资源
最近更新 更多