Django项目中渲染Html 表格 模板

由于需要在dajngo中生成一个html的报告,之前准备用html-table这个库来自动生成,但是生成的html格式不太可控,于是还是自己写一个html吧,然后通过网上查资料可以通过jinjia2来渲染前端页面。

项目结构

image

resources -- 项目根目录下的包
templates -- 存放html模板的目录

html.py  --  渲染html文件的模板

html模板

通过bootstrap提供的css进行页面渲染

demo.html
<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
 <title>Bootstrap 实例 - 边框表格</title>
 <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
    <style type="text/css">
             .table {
                    width: 50%;
                    max-width: 50%;
                    margin-bottom: 20px;
                    margin-left: 20px;
                }
            .p {
                font-weight: bolder;
                margin-left: 20px;
            }

            .h1 {
                text-align: center;
                margin-bottom: 40px;
            }

            .h4 {
                font-weight: bolder;
                margin-bottom: 20px;
            }
    </style>
 <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
 <script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js">
 </script>
</head>
<body>

<div class="panel panel-default">
        <div class="panel-body">
            <h1 class="h1">test</h1>
            <h4 class="h4">test </h4>
            <h4 class="h4">test </h4>
            <h4 class="h4">test </h4>
            <h4 class="h4">test </h4>
            <h4 class="h4" style="margin-bottom: 50px">test </h4>
            <p class="p">xxxxx</p>
                <table class="table table-bordered">
                    <thead>
                        <tr>
                            <th class="success">序号</th>
                            <th class="success">a</th>
                            <th class="success">b</th>
                            <th class="success">c</th>
                            <th class="success">d</th>
                            <th class="success">e</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td>1</td>
                            <!-- 这个地方定义的变量后面通过jinjia2进行渲染 -->
                            <td>{{ code }}</td>
                            <td></td>
                            <td></td>
                            <td></td>
                            <td></td>
                        </tr>
                        <tr>
                            <td>2</td>
                            <td></td>
                            <td></td>
                            <td></td>
                            <td></td>
                            <td></td>
                        </tr>
                        <tr>
                            <td>3</td>
                            <td></td>
                            <td></td>
                            <td></td>
                            <td></td>
                            <td></td>
                        </tr>
                    </tbody>
                </table>
        </div>
</div>

</body>
</html>

表格效果图

image

html.py

import datetime
from jinja2 import Environment, PackageLoader


class BuildHtml:
    @staticmethod
    def generate_html():
        file_name = datetime.datetime.now().strftime("%Y%m%d%H%M") + ".html"
        # resources为加载包的名称,templates为存放html模板的目录
        env = Environment(loader=PackageLoader('resources', 'templates'))
        template = env.get_template('demo.html')
        with open(file_name, 'w+', encoding="utf-8") as file:
            html_content = template.render(code="123")
            file.write(html_content)
        return file_name
posted @ 2022-06-29 15:57  枸杞泡茶呀  阅读(638)  评论(0)    收藏  举报