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

基本的な問題は、paginate タグに渡すものが (リストやクエリセットのように) 反復可能ではないため、ページ分割するためにステップスルーできないことです。

この問題は、返品を変更することで解決できます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

Python コードは iterator() を使用して QuerySet を返すと仮定します。この場合、クエリセットは反復可能ですが長さがないため、これは理にかなっています。iterator() が存在する場合は、扱いを返すコードから削除するか、少なくとも単純なクエリを作成する必要があります。

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

Krzystofが述べたように、あなたのテンプレートは間違っています。

{% autopaginate treats 10 %}

yout テンプレートで扱いをループするときは、まったく同じ反復可能な変数をページ分割する必要があると思うからです。

于 2012-05-11T12:37:06.227 に答える
0

試す:

    {% autopaginate treats 10 %} 

クエリセット(私が信じている扱い)には、デフォルトでobject_listが含まれていません

于 2012-05-11T12:11:12.993 に答える