【问题标题】:Django pagination is not workingDjango分页不起作用
【发布时间】:2016-02-11 04:27:32
【问题描述】:

按照我之前做过 2 次的教程,现在分页不起作用 我收到以下错误

TypeError at /posts/
object of type 'method' has no len()
Request Method: GET
Request URL:    http://127.0.0.1:8000/posts/
Django Version: 1.9.2
Exception Type: TypeError
Exception Value:    
object of type 'method' has no len()
Exception Location: /Users/ray/Desktop/uply/my-server/lib/python3.5/site-    packages/django/core/paginator.py in _get_count, line 77
Python Executable:  /Users/ray/Desktop/uply/my-server/bin/python
Python Version: 3.5.1
Python Path:    
['/Users/ray/Desktop/uply/my-server/src',
'/Users/ray/Desktop/uply/my-server/lib/python35.zip',
'/Users/ray/Desktop/uply/my-server/lib/python3.5',
'/Users/ray/Desktop/uply/my-server/lib/python3.5/plat-darwin',
'/Users/ray/Desktop/uply/my-server/lib/python3.5/lib-dynload',
'/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5',
'/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/plat-darwin',
'/Users/ray/Desktop/uply/my-server/lib/python3.5/site-packages']
Server time:    Wed, 10 Feb 2016 23:25:54 -0500

这是我在views.py中的代码

def post_list(request):
  queryset_list = Post.objects.all
  paginator = Paginator(queryset_list, 25)

  page = request.GET.get('page')
  try:
    queryset = paginator.page(page)
  except PageNotAnInteger:
    queryset = paginator.page(1)
  except EmptyPage:
    queryset = paginator.page(paginator.num_pages)

  template = "posts/post_list.html"
  name = "user"
  context = {
    "object_list": queryset,
    "name": name
  }
  return render(request, template, context)

在过去的两个月里,我使用相同的最新版本的 django 和 pyhthon 完成了这个和本教程的变体。到底是怎么回事?这怎么可能是问题 'method' 类型的对象没有 len()

我以前什么时候做过?欢迎所有帮助。

【问题讨论】:

    标签: python django pagination


    【解决方案1】:

    all 是一个方法:

    queryset_list = Post.objects.all()
    

    【讨论】:

    • 谢谢@nima。修复。就是这样
    【解决方案2】:

    Post.objects.all 更改为 Post.objects.all()

    def post_list(request):
      queryset_list = Post.objects.all()
      paginator = Paginator(queryset_list, 25)
    
      page = request.GET.get('page')
      try:
        queryset = paginator.page(page)
      except PageNotAnInteger:
        queryset = paginator.page(1)
      except EmptyPage:
        queryset = paginator.page(paginator.num_pages)
    
      template = "posts/post_list.html"
      name = "user"
      context = {
        "object_list": queryset,
        "name": name
      }
      return render(request, template, context)
    

    【讨论】:

      猜你喜欢
      • 2011-06-11
      • 2011-03-04
      • 2015-06-20
      • 2014-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-02
      相关资源
      最近更新 更多