Flask读取JSON字典列表渲染为HTML用户表格问题求助
Flask生成用户信息HTML表格修改方案
原代码存在的问题
- 遍历逻辑错误:
for i in len(file)会触发TypeError,整数类型不可直接迭代 - 嵌套循环逻辑冗余且错误:不需要内层循环遍历整个列表长度,只需取当前用户字典的
firstname、username、mail三个指定字段 - 代码缩进不规范:Flask视图函数内的代码没有正确缩进,会直接触发语法错误
- 表头字段与需求不匹配:原代码表头为丹麦语字段,需调整为需求要求的Name、Username、Mail
- 读取JSON文件未指定编码,特殊字符场景下可能出现乱码
修改后完整代码
import json from flask import Flask app = Flask(__name__) @app.route("/showallusers") def show_users(): # 读取用户JSON文件 with open("users.json", encoding="utf-8") as f: user_list = json.load(f) # 拼接HTML基础结构和表头 res = """ <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>用户列表</title> <style> table {border-collapse: collapse;} th, td {border: 1px solid #ccc; padding: 8px 12px;} th {background: #f5f5f5;} </style> </head> <body> <table> <thead> <tr> <th>Name</th> <th>Username</th> <th>Mail</th> </tr> </thead> <tbody> """ # 遍历用户列表拼表格行 for user in user_list: res += f""" <tr> <td>{user.get('firstname', '')}</td> <td>{user.get('username', '')}</td> <td>{user.get('mail', '')}</td> </tr> """ # 拼接HTML尾部 res += """ </tbody> </table> </body> </html> """ return res if __name__ == "__main__": app.run(debug=True)
核心修改说明
- 直接遍历用户列表元素,不需要通过下标索引取值,代码更简洁
- 用
dict.get()方法取字段值,避免某个字典缺失对应键时触发KeyError异常 - 增加了基础的表格样式,显示效果和需求给出的Markdown表格一致
- 增加了页面UTF-8编码声明,避免中文乱码
- 修正了所有缩进错误,代码可直接运行
内容的提问来源于stack exchange,提问作者Oscar Petersen
相关产品推荐
相关产品推荐

