我正在使用django-pagination软件包以tweety的方式对用户推文进行分页。在完成所有必要的指令后,分页似乎不起作用。我想我错过了一些东西。不知道要使用哪个变量来替换“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
答案 0 :(得分:1)
基本问题是,传递给paginate标记的内容不是可迭代的(如列表或查询集),因此无法单步执行分页。
您可以通过修改返回return render_to_response('dashy.html',{'treats': list(treats)}
但是,tweepy已包含pagination,因此您可以立即使用它。您的treats
对象具有以下可以使用的方法.next()
,.prev()
,.current_page()
,.count()
,.page_iterator()
,.page_index()
直接实施分页。
请参阅this link,了解ItemIterator
公开的所有方法的图表。
答案 1 :(得分:0)
尝试:
{% autopaginate treats 10 %}
查询集(我认为对待)默认情况下不包含对象列表
答案 2 :(得分:0)
我假设您的Python代码使用iterator()来返回QuerySet,在这种情况下这是有意义的,因为查询集是可迭代的但没有长度。也许你应该从返回条件的代码中删除iterator(),如果它存在,或者至少做一个简单的查询。
treats = Treat.objects.filter(price__gt=100)
...
return {'treats':treats}
然后你的模板是错误的,正如Krzystof所说,只是做
{% autopaginate treats 10 %}
因为我认为当你在yout模板中循环处理时,你必须对完全相同的可迭代变量进行分页。