(一)初学Flask框架,使用paginate分页报错
报错信息:
这里提示url_for()需要两个参数
检查page.html(分页模板)
{% macro page(data,url) %}
{% if data %}
<ul class="pagination pagination-sm no-margin pull-right">
<li><a href="{{ url_for(url,page=1) }}">首页</a></li>
{# has_perv判断上一个值是否存在 #}
{% if data.has_perv %}
{# perv_num取上一个值 #}
<li><a href="{{ url_for(url,data.perv_num) }}">上一页</a></li>
{% else %}
<li><a class="disabled" href="#">上一页</a></li>
{% endif %}
{% for p_num in data.iter_pages() %}
{% if p_num == data.page %}
<li class="active"><a href="{{ url_for(url,page=p_num) }}">{{ p_num }}</a></li>
{% else %}
<li><a href="{{ url_for(url,page=p_num) }}">{{ p_num }}</a></li>
{% endif %}
{% endfor %}
{# has_next判断下一个值是否存在 #}
{% if data.has_next %}
{# perv_num取下一个值 #}
<li><a href="{{ url_for(url,page=data.next_num) }}">下一页</a></li>
{% else %}
<li><a class="disabled" href="#">下一页</a></li>
{% endif %}
<li><a href="{{url_for(url,data.pages)}}">尾页</a></li>
</ul>
{% endif %}
{% endmacro %}
发现第8行:<li><a href="{{ url_for(url,data.perv_num) }}">上一页</a></li>
data.perv_num并没有传值给page,由于不仔细,写掉了page。应改成page=perv_num
第23行:<li><a href="{{ url_for(url,page=data.next_num) }}">下一页</a></li>
改成page=data.next_num
下面是路由中的paginate
def index(page=None):
if page is None:
page = 1
page_data = Movie.query.order_by(
Movie.addTime.desc()
).paginate(page=page, per_page=10) # per_page:当前页显示的数据数量,默认为20
return render_template('home/index.html', page_data=page_data)
使用分页模板
{% extends 'home/layout.html' %}
{% import "ui/page.html" as pg %}
{% block content %}
</section>
{# 电影列表 #}
<div class="container">
<section id="movielist" style="">
<table class="table table-view">
<tbody>
<tr>
<th>电影名</th>
<th>Ftp链接</th>
</tr>
{% for movie in page_data.items %}
<tr>
<td>{{ movie.title }}</td>
<td>{{ movie.ftp }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</section>
<div class="box-footer clearfix">
{{ pg.page(page_data,"home.index") }}
</div>
</div>
{% endblock %}
初学Flask,写博客只为记录自己的学习过程,并非有什么其他目的。