模板渲染jnja2模块

模板渲染jnja2模块

模板的引入:

        在返回动态页面时,上述我们在08web框架返回每次访问的时间,利用自己写的占位符进行字符串替换进行动态响应;

        在实际应用中,完全可以从数据库中读取数据,然后替换html页面中的相关内容(专业名词就是模板渲染,后台渲染先渲染,再返回给浏览器渲染),响应给浏览器动态数据。

       数据替换的过程就是通过模板渲染数据,本质就是对HTML中的某些特殊符号进行了替换来展示动态数据。这里常用的特殊符号的定义有现成的渲染模板工具:jinja2模块(非内置模块,配置好pip环境变量的前提下在cmd交互式窗口执行:pip install jinja2或者在pycharm设置中的项目环境变量进行引入)。

 

jinja2模板渲染格式案例:

index.html

 1 <!doctype html>
 2 
 3 <html lang="en">
 4 
 5 <head>
 6 
 7     <meta charset="UTF-8">
 8 
 9     <style>
10 
11         table,th,td{
12 
13             border: 1px solid black;
14 
15             border-collapse:collapse;}
16 
17     </style>
18 
19     <title>jinja2渲染模板</title>
20 
21 </head>
22 
23 <body>
24 
25     <div>
26 
27         <table>
28 
29             <thead>
30 
31             <tr>
32 
33                 <th>姓名</th>
34 
35                 <th>爱好</th>
36 
37             </tr>
38 
39             </thead>
40 
41             <tbody>
42 
43             <tr>
44 
45                 <td>{{name}}</td>
46 
47                 <td>
48 
49                     <ul>
50 
51                         {% for hobby in hobbylist%}
52 
53                         <li>{{hobby}}</li>
54 
55                         {% endfor %}
56 
57                     </ul>
58 
59                 </td>
60 
61             </tr>
62 
63             </tbody>
64 
65         </table> 
66 
67     </div>
68 
69 </body>
70 
71 </html>
index.html 

server服务端:

 1 from wsgiref.simple_server import make_server#wsgiref基于模块原生socket的TCP通信服务程序
 2 
 3 from jinja2 import Template         #渲染模板
 4 
 5  
 6 
 7 info=[{"zhang":["爬山","看书","旅游"]}]
 8 
 9  
10 
11 def apllication(environ,start_response):
12 
13     start_response("200 OK",[("Content-Type","text/html")])
14 
15     path=environ["PATH_INFO"]
16 
17     if path=="/":
18 
19         with open("index.html","r",encoding="utf-8")as f:
20 
21             data=f.read()
22 
23  
24 
25         temple=Template(data)#渲染模板
26 
27         # 调用render方法进行数据渲染加载
28 
29         ret=temple.render({"name":"zhang","hobbylist":["爬山","看书","旅游"]})
30 
31         return [ret.encode("utf-8")]
32 
33     else:
34 
35         data=b"Sorry:404 not fond!"
36 
37         return [data]
38 
39  
40 
41 if __name__ == '__main__':
42 
43  
44 
45     httpd=make_server("127.0.0.1",8888,apllication)
46 
47     httpd.serve_forever()
server端代码 

       以上案例仅仅只演示了一个简单的使用方式,在实际应用中很多都是从数据库加载的,案例中的信息会有很多条,每个人都有对应的兴趣爱好,这样可以运用模板渲染进行动态的返回数据,在此就不在演示。

django中的渲染模板使用的并不是jinja2模块
 

原文地址:https://www.cnblogs.com/open-yang/p/11182873.html