2012-05-11 3 views
0

Я использую пакет django-pagination для разбиения на страницы пользователей твитов в tweepy. После выполнения всей необходимой инструкции разбиение на страницы, похоже, не работает. Наверное, я что-то упускаю. Не знаю, какую переменную использовать для замены «object_list». Как я могу заставить его разбиться на страницы?Ошибка Django-Pagination

Ошибка:

 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 

ответ

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.

+0

Большое спасибо! Он работает как шарм. Если я буду использовать твипичную разбивку на страницы, как я собираюсь ее реализовать? Будут ли еще обрабатывать .page_iterator()? Например: treats = Cursor (api.list_timeline, owner = request.user, slug = ""). Items (20). page_iterator()? – picomon

0

Try:

{% autopaginate treats 10 %} 

Набор запросов (считает, что я считаю) doest не содержит object_list по умолчанию

+0

Я получаю эту ошибку: TemplateSyntaxError в/тест/ Пойманный TypeError при визуализации: объект типа 'ItemIterator' не имеет LEN() Метод запроса: \t GET URL запроса: \t HTTP: //127.0 .0.1: 8000/тест/ Джанго Версия: \t 1.3.1 Тип исключения: \t TemplateSyntaxError Exception Значение: \t Пойманный TypeError во время рендеринга: объект типа 'ItemIterator' не имеет LEN() Exception Адрес: \t C: \ Python27 \ lib \ site-packages \ django \ core \ paginator.py в _get_count, строка 53 Python Исполняемый файл: \t C: \ Python27 \ python.exe Python Версия: \t 2.7.2 – picomon

0

Я предполагаю, что ваш код Python использует итератор(), чтобы возвращать QuerySet, и в этом случае это имеет смысл, поскольку набор запросов является итерируемым, но не имеет длины , Возможно, вам следует удалить iterator() из возвращаемого кода, если он присутствует, или, по крайней мере, сделать простой запрос.

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

Тогда ваш шаблон не так, как указано Кшиштоф, просто сделать

{% autopaginate treats 10 %} 

Потому что я думаю, когда вы цикл по угощению в YOUT шаблона, вы должны постраничным ту же самой итерации переменного.

+0

Я подключаюсь к твиттеру, чтобы получить временную шкалу пользователей через Tweepy. Изменение значения лечит не будет иметь доступ к твиттеру. Или я могу еще ввести код? Ниже приведены мои взгляды: – picomon

+0

Извините, я отредактировал сообщение, любезно проверьте view.py выше. Благодарю. – picomon

Смежные вопросы