Python之jinja2模板引擎生成HTML


Python之jinja2模板引擎生成HTML

jinja2介绍

Jinja2 是一个现代的,设计者友好的,仿照 Django 模板的 Python 模板语言。 它速度快,被广泛使用,并且提供了可选的沙箱模板执行环境保证安全,关于jinja2的文档介绍

安装方法

pip3 install jinja2

模板文件

接下来制作一个模板文件template.html,直接给代码



巡检报告

报告综述

巡检地点 : 机房  开始时间 : {{start_time}}  结束时间 : {{stop_time}}

检测结果 : ***  其它信息:***

详细信息

{% for item in body %} {% endfor%}
机柜号 检测时间 检测结果 详细信息 图片路径
{{ item.cabID }} {{ item.shijian }} {{ item.final_result }} {{ item.info }} 图片

测试方法

我们写一个脚本程序,用来调用上述模板,生成指定的结果文件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)

上述使用的是超链接的形式进行图片显示,实际使用时不太方便,接下来使用锚点的方法来将图片和结果显示在一个页面,代码如下



巡检报告

报告综述

巡检地点 : 机房  开始时间 : {{start_time}}  结束时间 : {{stop_time}}

检测结果 : ***  其它信息:***

详细信息

{% for item in body %} {% endfor%}
机柜号 检测时间 检测结果 详细信息 图片路径
{{ item.cabID }} {{ item.shijian }} {{ item.final_result }} {{ item.info }} {{ item.shijian }}

图片显示

{% for item in body %}

{{ item.shijian }}


{% endfor%}

运行结果显示如下: