Flask中将国家列表存入JSON文件后渲染到HTML表格的方法咨询
实现步骤
- 第一步:创建独立的JSON数据存储文件
在你的Flask项目根目录下新建名为country_data.json的文件,将原硬编码的国家数据按JSON语法写入即可。注意JSON格式不支持元组,直接用数组代替,Python读取后会自动转为列表,不影响后续Jinja的渲染逻辑。
文件内容示例:
[ ["Nigeria", "160,470,000,000 mᶟ", "216 liter.p.capital", "216,139,589"], ["Ethiopia", "10,550,000,000 mᶟ", "279 liter.p.capital", "122,963,588"], ["Egypt", "77,550,100,000 mᶟ", "2,202 liter.p.capital", "120,334,404"] ]
- 第二步:修改search视图函数,读取JSON文件替换硬编码数据
首先在你的Flask启动文件头部导入依赖模块:
import json import os
然后修改search视图函数的代码,替换原硬编码的data部分:
# Country page section. @app.route('/search') @login_required def search(): countryTables = ("Country", "Yearly Water Use", "Daily Water Use", "Population M") # 读取独立存储的国家数据 data_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'country_data.json') with open(data_path, 'r', encoding='utf-8') as f: data = json.load(f) # 传参逻辑完全不变,无需修改模板 return render_template('search.html', countryTables=countryTables, data=data)
常见调试注意事项
- JSON语法要求严格:所有字符串必须用双引号包裹,数组最后一个元素末尾不能加多余逗号,否则会触发JSON解析报错,这也是多数人首次调试JSON方案失败的常见原因
- 上述代码用
os.path拼接绝对路径,可避免不同运行环境下工作目录不一致导致的文件找不到问题
后续新增数据操作
后续需要新增国家条目时,直接在country_data.json的数组里按现有格式添加对应内容即可,不需要修改任何Python或HTML代码,满足你后续扩容的需求。
内容的提问来源于stack exchange,提问作者Matrix
相关产品推荐
相关产品推荐

