Dar*_*ech 8 python mongodb mongoengine flask
我有一个小的Flask应用程序,它呈现博客文章:
views.py:
class ListView(MethodView):
def get(self, page=1):
posts = Post.objects.all()
return render_template('posts/list.html', posts=posts)
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但我想为posts
对象添加分页.看一下项目文档,我看到有一个分页类.
所以我尝试了这个:
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)
Run Code Online (Sandbox Code Playgroud)
但现在我收到一个错误:
TypeError: 'Pagination' object is not iterable
Run Code Online (Sandbox Code Playgroud)
那么如何posts
在模板中迭代我?
任何帮助非常感谢.
该Pagination
对象有一个items
列表,其中包含mongoengine文档对象(在您的情况下是Post
对象).可以迭代此列表以显示文档.
例如,在您的模板中:
{% for post in posts.items %}
{{ post.title }}
{{ post.content }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
要获取分页链接的实际页码,请使用iter_pages()
:
<div id="pagination-links">
{% for page in posts.iter_pages() %}
{{ page }}
{% endfor %}
</div>
Run Code Online (Sandbox Code Playgroud)
{% 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 %}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5170 次 |
最近记录: |