Flask中的分页不起作用

标记

我有一个观点:

@app.route('/', methods=['GET', 'POST'])
@app.route('/index', methods=['GET', 'POST'])
@app.route('/index/<int:page>', methods=['GET', 'POST'])
def index(page=1):
    posts = Post.query.paginate(page, 3, False).items
    return render_template('index.html', posts=posts)

代码模板:

    {% if posts %}
    <ol>
    {% for post in posts %}
        <li>{{ post.title }}</li>  | {{ post.text }} | {{ post.time }}</li>
    {% endfor %}
    </ol>
    {% else %}
    <h2>There is no posts</h2>
    {% endif %}

    {% if posts.has_prev %}<a href="{{ url_for('index', page=posts.prev_num) }}"><< Newer posts</a>{% else %}<< Newer posts{% endif %} |
    {% if posts.has_next %}<a href="{{ url_for('index', page=posts.next_num) }}">Older posts >></a>{% else %}Older posts >>{% endif %}

问题是它不会为我生成查看更多帖子的链接。

马丁·彼得斯(Martijn Pieters)

.has_prev.has_nextPagination实例的属性,但是您将丢弃该实例。您传递给视图的全部是Pagination.items属性。然后,您仍尝试访问项目列表中.has_prev.has_next属性,并且这些属性在此处不存在,因此Jinja2将其解析为undefined

传递Pagination实例:

posts = Post.query.paginate(page, 3, False)
return render_template('index.html', posts=posts)

并调整您的模板:

{% if posts.items %}
    <ol>
    {% for post in posts.items %}
        <li>{{ post.title }}</li>  | {{ post.text }} | {{ post.time }}</li>
    {% endfor %}
</ol>
{% else %}
    <h2>There is no posts</h2>
{% endif %}

{% if posts.has_prev %}<a href="{{ url_for('index', page=posts.prev_num) }}"><< Newer posts</a>{% else %}<< Newer posts{% endif %} |
{% if posts.has_next %}<a href="{{ url_for('index', page=posts.next_num) }}">Older posts >></a>{% else %}Older posts >>{% endif %}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章