• 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) 
    

      

  • 相关阅读:
    【数据结构】并查集
    项目管理【12】 | 项目范围管理-收集需求
    项目管理【11】 | 项目范围管理-规划范围管理
    项目管理【10】 | 项目范围管理-范围管理概述
    Visual Studio代码远程调试方法
    项目管理【09】 | 项目整体管理-结束项目或阶段
    操作系统【2】Linux系统安装
    操作系统【1】Linux基础知识
    移动端开发案例【2】头部组件开发
    移动端开发案例【1】全局样式配置
  • 原文地址:https://www.cnblogs.com/wufj/p/14957009.html
Copyright © 2020-2023  润新知