2013-04-04 2 views
8

У меня есть небольшое приложение, которое визуализирует КОЛБУ Публикаций:Колба mongoengine пагинация

views.py:

class ListView(MethodView): 

    def get(self, page=1): 
     posts = Post.objects.all() 
     return render_template('posts/list.html', posts=posts) 

Это все хорошо, но я хотел бы добавить нумерацию страниц в posts объекта , Глядя на project docs, я вижу, что существует класс разбиения на страницы.

Так что я попытался это:

class ListView(MethodView): 

    def get(self, page=1): 
     posts = Post.objects.paginate(page=page, per_page=10) 
     return render_template('posts/list.html', posts=posts) 

Но теперь я получаю сообщение об ошибке:

TypeError: 'Pagination' object is not iterable 

Так как я перебирать мой posts в шаблоне?

Любая помощь очень ценится.

+1

Какая у вас temp поздний код? Вы можете поделиться? – codegeek

ответ

8

Объект Pagination имеет items list, который будет содержать объекты документа mongoengine (в вашем случае объекты Post). Этот список можно повторить, чтобы отобразить документы.

Например, в шаблоне:

{% for post in posts.items %} 
    {{ post.title }} 
    {{ post.content }} 
{% endfor %} 

Чтобы получить реальные номера страниц для постраничной ссылок, используйте iter_pages():

<div id="pagination-links"> 
    {% for page in posts.iter_pages() %} 
     {{ page }} 
    {% endfor %} 
</div> 

И documentation и github link above, имеют лучший пример для ссылки на страницы:

{% macro render_pagination(pagination, endpoint) %} 
    <div class=pagination> 
     {%- for page in pagination.iter_pages() %} 
      {% if page %} 
       {% if page != pagination.page %} 
        <a href="{{ url_for(endpoint, page=page) }}">{{ page }}</a> 
       {% else %} 
        <strong>{{ page }}</strong> 
       {% endif %} 
      {% else %} 
       <span class=ellipsis>…</span> 
      {% endif %} 
     {%- endfor %} 
    </div> 
{% endmacro %} 
+0

обновленные ссылки github, чтобы отразить последний выпуск фляжки-монгоингина –

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