python 如何使用 pandas 在 flask web 网页中分页显示 csv 文件数据
目录
一、实战场景
二、知识点
python 基础语法
python 文件读写
python 分页
pandas 数据处理
flask web 框架
jinja 模版
三、菜鸟实战
初始化 Flask 框架,设置路由
jinja 模版 渲染列表数据
分页请求数据
显示详情页数据示例
运行结果
运行截图
列表页数据示例
详情页数据示例
一、实战场景
python 如何使用 pandas 在 flask web 网页中分页显示 csv 文件数据
二、知识点
python 基础语法
python 文件读写
python 分页
pandas 数据处理
flask web 框架
jinja 模版
三、菜鸟实战
初始化 Flask 框架,设置路由
'''Description: 分页读取并显示 csv 文件数据'''from math import ceilimport csvfrom flask import Flask, render_template, request, redirectfrom spiders.file_manager import FileManager# 初始化框架web = Flask(__name__)@web.route('/')def index(): # 首页 return redirect('/table/1')@web.route('/table/')def table(page_num): # 分页读取并显示 csv 文件数据 file_manager = FileManager() file = file_manager.get_data_file_path("tao365_detail.csv") # 若不指定limits默认为 5 limits = request.args.get('limits', 5, type=int) def show_csv(reader, page=page_num, limits=limits): # 内部函数,根据limits和所在页数生成数据 df = [] for row in reader: if page_num * limits >= (reader.line_num - 1) > (page_num - 1) * limits: df.append(row) return df with open(file, 'r+', encoding='utf-8') as f: # 计算页面数 row_length = len(f.readlines()) - 1 pages = int(ceil(row_length / limits)) with open(file, 'r+', encoding='utf-8') as f: # 计算数据 reader = csv.reader(f) next(reader) df = show_csv(reader, page_num, limits) # 加载模版和模版数据 return render_template('table.html', df=df, pages=pages, page_num=page_num, limits=limits)@web.route('/table_detail')def table_detail(): # 二手房详情 row = request.args.get('row').split(',') return render_template('table_detail.html', row=row)# 启动 flask web 框架web.run(debug=True)
jinja 模版 渲染列表数据
pandas 在网页中分页显示 csv 文件
使用 Python、pandas、bootstrap、flask 框架等技术实现
标题 价格 每平方价格 <!-- 小区 --> <!-- 地址 --> 房屋户型 建筑面积 所在楼层 房屋朝向 建筑年代 详情 {% for row in df %} <!-- {{row}} --> {% for subrow in row %} {% if loop.index != 5 and loop.index != 4 %} {{subrow}} {% endif %} {% endfor %} 点击查看 {% endfor %}
分页请求数据
$(document).ready(function() { $('.link-table').each(function() { var row = $(this).attr('data-row') var row1 = eval('(' + row + ')').join(',') $(this).attr('href', '/table_detail?row=' + row1) }) layui.use(['laypage', 'layer'], function() { var laypage = layui.laypage, layer = layui.layer; laypage.render({ elem: 'demo', count: "{{pages}}", curr: "{{ page_num }}", theme: '#587187', // limit: pageSize //一页数据 jump: function(obj, first) { console.log(obj.curr, first) if (!first) { window.location.href = "/table/" + obj.curr; //跳转链接 } } }); });})
显示详情页数据示例
pandas 在网页中分页显示 csv 文件 - 详情页数据示例
使用 Python、pandas、bootstrap、flask 框架等技术实现
标题 {{row[0]}} 价格 {{row[1]}} 每平方价格 {{row[2]}} 房屋户型 {{row[5]}} 建筑面积 {{row[6]}} 所在楼层 {{row[7]}} 房屋朝向 {{row[8]}} 建筑年代 {{row[9]}}
运行结果
运行截图
* Serving Flask app 'app_tao04'
* Debug mode: on
* Running on http://127.0.0.1:5000
浏览器中打开 http://127.0.0.1:5000
列表页数据示例
详情页数据示例
菜鸟实战,持续学习!