0

我正在使用django-pagination包在 tweepy 中对用户推文进行分页。遵循所有必要的说明后,分页似乎不起作用。我想我错过了一些东西。不知道要使用哪个变量来替换“object_list”。我怎样才能让它分页?

错误:

       TemplateSyntaxError at /test/

       Caught VariableDoesNotExist while rendering: Failed lookup for key [object_list] in u'<tweepy.cursor.ItemIterator object at 0x0437DC10>'

        Request Method:     GET
        Request URL:    http://127.0.0.1:8000/test/
        Django Version:     1.3.1
        Exception Type:     TemplateSyntaxError
        Exception Value:    

      Caught VariableDoesNotExist while rendering: Failed lookup for key [object_list] in u'<tweepy.cursor.ItemIterator object at 0x0437DC10>'

       Exception Location:  C:\Python27\lib\site-packages\django\template\base.py in _resolve_lookup, line 692
       Python Executable:   C:\Python27\python.exe
       Python Version:  2.7.2

模板:

     {% extends "base.html" %}

     {% load pagination_tags %} 

       {% block content %}

        {% autopaginate treats.object_list 10 %} 

          {% for treat in treats %}  

              <center> <p>  {{ treat.author.screen_name}} </p>
         <p>  {{ treat.text|safe }}  {{ treat.url }} </p>
         <p> {{ treat.created_at }}  Via: {{treat.source}} </p> </center>

         {% empty %} 

            <p> Sorry, No Update Could Be Loaded At This Time. </p>
        {% endfor %} 

         {% paginate %} 
          {% endblock %}

意见:

   def testdat(request):
       if request.method=="GET":
          treats=Cursor(api.list_timeline, owner=request.user, slug="").items(20)
          for treat in treats:
              treat.__getstate__()
              top=Twet(text= treat.text, author_screen_name= treat.author.screen_name, created_at= treat.created_at, source= treat.source)
              top.save()
          treats=Cursor(api.list_timeline, owner=request.user, slug='').items(20)
          return render_to_response('dashy.html',{'treats': treats},context_instance=Requ
4

3 回答 3

1

那么基本问题是您传递给分页标记的内容不是可迭代的(如列表或查询集),因此它无法通过它进行分页。

您可以通过修改您的退货来解决这个问题return render_to_response('dashy.html',{'treats': list(treats)}

但是,tweepy 已经包含分页功能,因此您可以直接使用它。您的treats对象具有以下方法.next(), .prev(), .current_page(), .count(), .page_iterator().page_index()您可以使用它们直接实现分页。

有关公开的所有方法的图表,请参阅此链接。ItemIterator

于 2012-05-11T15:20:35.627 回答
0

尝试:

    {% autopaginate treats 10 %} 

默认情况下,查询集(我相信的对待)不包含 object_list

于 2012-05-11T12:11:12.993 回答
0

我假设您的 Python 代码使用 iterator() 来返回 QuerySet,在这种情况下这是有道理的,因为查询集是可迭代的但没有长度。如果 iterator() 存在,也许你应该从返回的代码中删除 iterator(),或者至少做一个简单的查询。

treats = Treat.objects.filter(price__gt=100)
...
return {'treats':treats}

那么你的模板是错误的,正如 Krzystof 所说,就这样做

{% autopaginate treats 10 %}

因为我认为,当您遍历 yout 模板中的零食时,您必须对完全相同的可迭代变量进行分页。

于 2012-05-11T12:37:06.227 回答