jinja2模板引擎生成HTML转
Posted 白日何短短
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jinja2模板引擎生成HTML转相关的知识,希望对你有一定的参考价值。
转自:https://blog.csdn.net/bible_reader/article/details/105684878
0 背景
在之前的文章中,我介绍过《Python之生成html文件》以及《HTML零基础入门教程(详细)》,手动生成了html文件,在实际使用的时候,我们完全可以套用模板文件来生成,免去了一条一条手写的麻烦。关于python的模板引擎有很多种类,本文选择的是比较常用的一种jinja2,接下来对该引擎的使用做一个介绍。
1 jinja2介绍
Jinja2 是一个现代的,设计者友好的,仿照 Django 模板的 Python 模板语言。 它速度快,被广泛使用,并且提供了可选的沙箱模板执行环境保证安全,关于jinja2的文档介绍。
安装方法
sudo pip install jinja2
2 模板文件
接下来制作一个模板文件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>
3 测试方法
我们写一个脚本程序,用来调用上述模板,生成指定的结果文件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)
运行后即可生成result.html文件如下
-------------------------2019/9/9更新----------------------------------------
上述使用的是超链接的形式进行图片显示,实际使用时不太方便,接下来使用锚点的方法来将图片和结果显示在一个页面,代码如
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)
以上是关于jinja2模板引擎生成HTML转的主要内容,如果未能解决你的问题,请参考以下文章
appium+python自动化50-生成定位对象模板templet(jinja2)