Python之jinja2模板引擎生成HTML
Python之jinja2模板引擎生成HTML
jinja2介绍
Jinja2 是一个现代的,设计者友好的,仿照 Django 模板的 Python 模板语言。 它速度快,被广泛使用,并且提供了可选的沙箱模板执行环境保证安全,关于jinja2的文档介绍
安装方法
pip3 install jinja2
模板文件
接下来制作一个模板文件template.html,直接给代码
<meta http-equiv="Content-Type"content="text/html;charset=utf-8"> <html align='left'> <h1>巡检报告</h1> <body> <h2>报告综述</h2> <p>巡检地点 : 机房 开始时间 : {{start_time}} 结束时间 : {{stop_time}} </p> <p>检测结果 : *** 其它信息:***</p> <h2>详细信息</h2> <table border="1" width = "40%" cellspacing='0' cellpadding='0' align='left'> <tr> <th>机柜号</th> <th>检测时间</th> <th>检测结果</th> <th>详细信息</th> <th>图片路径</th> </tr> {% for item in body %} <tr align='center'> <td>{{ item.cabID }}</td> <td>{{ item.shijian }}</td> <td>{{ item.final_result }}</td> <td>{{ item.info }}</td> <td><a href={{item.image_path}}>图片</a> </td> </tr> {% endfor%} </table> </body> </html>
测试方法
我们写一个脚本程序,用来调用上述模板,生成指定的结果文件result.html
from jinja2 import Environment, FileSystemLoader def generate_html( body, starttime, stoptime): env = Environment(loader=FileSystemLoader('./')) template = env.get_template('template.html') with open("result.html",'w+') as fout: html_content = template.render(start_time=starttime , stop_time=stoptime, body=body) fout.write(html_content) if __name__ == "__main__": body = [] result = {'cabID':1, 'shijian':2019, 'final_result':"正常", 'info':"无", 'image_path':"test.jpg"} body.append(result) generate_html(body, 2019, 2019)
上述使用的是超链接的形式进行图片显示,实际使用时不太方便,接下来使用锚点的方法来将图片和结果显示在一个页面,代码如下
<meta http-equiv="Content-Type"content="text/html;charset=utf-8"> <html align='left'> <h1>巡检报告</h1> <body> <h2>报告综述</h2> <p>巡检地点 : 机房 开始时间 : {{start_time}} 结束时间 : {{stop_time}} </p> <p>检测结果 : *** 其它信息:***</p> <h2>详细信息</h2> <table border="1" width = "40%" cellspacing='0' cellpadding='0'> <tr> <th>机柜号</th> <th>检测时间</th> <th>检测结果</th> <th>详细信息</th> <th>图片路径</th> </tr> {% for item in body %} <tr align='center'> <td>{{ item.cabID }}</td> <td>{{ item.shijian }}</td> <td>{{ item.final_result }}</td> <td>{{ item.info }}</td> <td><a href="#{{ item.shijian }}">{{ item.shijian }}</a></td> </tr> {% endfor%} </table> <h2>图片显示</h2> {% for item in body %} <p>{{ item.shijian }}</p> <a name="{{ item.shijian }}"> <img src="{{ item.image_path }}" width="640"></a> <br> {% endfor%} </body> </html>
运行结果显示如下:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY