Flask + Ajax + Mysql 实现网页异步加载(一)

滚动条滑到底部时候,在当前页面加载下一页数据;

滚动条到达顶部时候,刷新当前页面。

一、flask 实现的服务器端

@app.route('/',methods=['GET','POST'])
def index():
    '''新闻首页'''
    page = request.args.get('page', 1, type=int)
    pagination = News.query.paginate(page,per_page=10)
    news_list = pagination.items
    for anews in news_list:
        if anews.cover_pic is None:
            anews.cover_pic = anews.pic.split('\r\n')[0]
        print(anews.cover_pic)
    return render_template('index.html', pagination = pagination ,news_list=news_list)

解析:

1、flask通过路由@app.route(url, methods=['GET','POST'])两个方法接受客户端请求。

2、客户端的请求交给 index()函数处理。

3、request.args.get('page',1,type=int) :获取url里面的page参数,默认值为1,代表浏览器显示第几页,即要从数据库里获取第几页的数据(这里,第几页指的是在客户端展示的第几页,因为数据已经从数据库全部提取出来了,通过paginate分页,可以规定每一页显示多少条记录,这里10条记录作为一页的内容。),得到的page传入后面。

4、News.query.paginate(page,per_page=10) : News对象已经获得了对应的表中的所有记录。然后执行query.paginate()的时候,自动根据page 和per_page 返回对应的记录。比如默认是page=1,返回表中的1——10 这10条记录;当page=2时,返回表中的11——20这10条记录。

5、pagination.items :指10条记录的所有列,可以理解为10个列表,每个列表又由字典组成。

6、for 循环没实际意义,在pycharm查看图片是否被加载。

7、最后return render_template('index.html',pagination=pagination, news_list=news_list) 是对浏览器请求的response。返回一个网页和要在网页里填充的变量。

Flask + Ajax + Mysql 实现网页异步加载(二)

      


版权声明:本文为qq_34333481原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。