JSON文件读写实现:Flask脚本判断文件存在性及处理逻辑
Flask 脚本:JSON文件检查与动态页面渲染
看起来你已经搭好了基本框架,我来帮你把剩下的逻辑补全,实现完整的功能——先检查目标JSON文件是否存在,存在就直接读取数据渲染页面;不存在就从数据库拉取数据、生成JSON文件,再继续后续流程。
先给你完整的可运行示例代码(注意要放在Flask的视图函数里哦):
from flask import render_template import json import os from your_db_module import db # 替换成你实际的数据库模块 @app.route('/tests') def show_tests(): title = "Tests" json_file = "tests.json" # 检查JSON文件是否存在 if os.path.exists(json_file): # 读取JSON文件内容并转为Python对象 with open(json_file, 'r', encoding='utf-8') as f: data = json.load(f) # 渲染模板,把数据传给前端 return render_template('tests.html', title=title, data=data) else: # 从数据库查询数据(这里替换成你实际的查询逻辑) db_data = db.session.query(YourTestModel).all() # 替换成你的模型和查询 # 将数据库查询结果转为可序列化的JSON格式 # 假设你的模型有to_dict()方法来转成字典,或者手动构造 serialized_data = [item.to_dict() for item in db_data] # 创建并写入JSON文件 with open(json_file, 'w', encoding='utf-8') as f: json.dump(serialized_data, f, ensure_ascii=False, indent=4) # 渲染模板,传入刚生成的数据 return render_template('tests.html', title=title, data=serialized_data)
接下来给你拆解几个关键部分:
- 文件存在判断:用
os.path.exists()检查目标文件路径,确保我们只在需要的时候才去查数据库,提升性能 - JSON文件读取:存在文件时,用
json.load()把JSON内容转成Python字典/列表,这样前端模板可以直接遍历使用 - 数据库数据处理:查询到数据后,要把ORM模型对象转为JSON可序列化的格式(比如字典列表),这里假设你的模型有
to_dict()方法,如果没有,你可以手动构造字典,比如{'id': item.id, 'name': item.name} - JSON文件写入:用
json.dump()写入文件,加上ensure_ascii=False保证中文等非ASCII字符正常显示,indent=4让文件格式更美观,方便调试
另外给你提两个小建议:
- 把JSON文件的路径配置成常量或者用Flask的
app.root_path来拼接,避免相对路径带来的问题,比如json_file = os.path.join(app.root_path, 'static', 'tests.json')(如果放在static目录下) - 如果数据库数据会更新,你可能需要加个缓存失效的逻辑,比如定时检查数据库更新时间,或者提供手动刷新的接口,避免用户看到过期的JSON数据
内容的提问来源于stack exchange,提问作者PyNerd
相关产品推荐
相关产品推荐

