PythonFlask-SQLAlchemy数据库分页查询paginate以及None的解决办法_百 ...
PythonFlask-SQLAlchemy数据库分页查询paginate以及None的解决办法简介
正⽂
查询全部
lol id大全
有多少条数据就会返回多少数据,如果数据量⼤了⼈都没了。
staffs = Staff.query.all()
分页查询
之前在看php代码的时候是在查询sql语句的时候⽤limit指定查询返回的是第⼏条到第⼏条。只需要指定页数和页容量通过数学计算⼀下就能得出对应的sql语句。
select * from student limit(curPage-1)*pageSize,pageSize;
但是懒⼈为了防⽌sql注⼊不可能使⽤sql语句滴,SQLAlchemy⼤法好。
使⽤paginate时返回的不是数据⽽是对象,需要通过对象的items获取数据,通过pages属性可以获取到总页数
# 第⼀页,每页20条数据。
staffs = Staff.query.paginate(page=1, per_page=20, error_out=False)
return render_template('search.html',
staff=staffs.items,
pages=staffs.pages)
None的问题
@ute('/')
def search():
page =int(('page',1))# 获取页码,默认为1
paginate = der_by('s_id').paginate(page=page, per_page=10, error_out=False)
keys =""# Key.query.all()
historys =""# History.query.all()qq留言板主人寄语
return render_template('search.html',
pagin=paginate,
key=keys,
history=historys)
<br>
总页数{{ (pagin.pages) }}
餐饮经营{#如果存在上⼀页#}
{% if pagin.has_prev %}
<a href="/?page={{ pagin.prev_num }}">上⼀页:</a>
{% endif %}
{%  for i in  pagin.iter_pages() %}
公司上市的条件<a href="/?page={{ i }}">{{ i }}</a>
{% endfor %}
数据库恢复
{#如果存在下⼀页#}
{% if pagin.has_next %}
<a href="/?page={{ _num }}">下⼀页:</a>
{% endif %}
solution
try
刚开始我想的是先获取参数,再判断是不是None,后来没成功就⽤try了。对异常进⾏默认处理。亲测有效不报错,但是问题在于解决了错误没解决错误的根源,还是会显⽰None
try:
page =int(('page',1))# 获取页码,默认为1
except Exception:
page =1
None
看了之后才知道可以在模板中进⾏判断None,我之前实在路由设置⾥整的,所以就emm
{%  for i in  pagin.iter_pages() %}
{% if i %}
{% if i==pagin.page %}
<a href="/?page={{ i }} class='avtive'">{{ i }}</a>
{% else %}
<a href="/?page={{ i }}">{{ i }}</a>
{% endif %}
{% else %}
{% endif %}
{% endfor %}
但是上⾯没有完全显⽰all结果啊,告诉我们在pagin.iter_pages()中加⼊条件即可pagin.iter_pages(left_edge=pagin.pages)
但是我不想要这么多哎,这下⼦就得认真说⼀下Paginate类属性的iter_pages参数了
iter_pages(left_edge,left_current,right_current,right_edge) ,默认参数2 2 5 2
最左边的页数
当前页数左边的页数
当前页右边的页数
最右边的页数
参考
:left_edge=user.pages
啦字组词

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。