首页 > 编程语言 > 详细

flask之jinjia2模板语言学习

时间:2019-07-12 17:24:22      阅读:93      评论:0      收藏:0      [点我收藏+]

技术分享图片

flask_jinjia2.py

 1 ‘‘‘
 2 flask中的jinjia2模板语言(和django中模板类似):
 3     (1)模板变量{{ }}
 4 
 5     (2)模板标签{% %}
 6         ①for循环遍历
 7             {% for foo in  %}
 8                 ......
 9             {% endfor %}
10         ②if...else判断
11             {% if %}
12                 ...
13             {% elif %}
14                ...
15             {% else %}
16                 ...
17             {% endif %}
18     (3)模板继承{% extends  html文件 %},配合模板中定义的block重写需要改动的部分
19         {% extends ‘base.html‘ %}
20         {% block 模板中块名 %}
21             ......
22         {% endblock %}
23 
24     (4)模板组件{% include html文件 %}在页面中引入html组件
25 
26     (5)通过后端特殊装饰器定义函数在模板中直接时候用
27         ①@app.template_global()装饰的函数直接以模板变量函数调用方式使用,如{{ sum(1,2) }}
28         ②@app.template_filter()装饰的函数直接以模板变量过滤器形式使用,第一个参数自动为变量,如{{ 1 | sum2(2,3,4) }}
29 
30     (6)jinjia2模板语言中的宏定义
31           在模板中先定义:
32             {% macro  定义宏(形参,形参...)   %}
33                 html标签使用参数
34             {% endmacro %}
35 
36           在模板中使用定义的宏:
37             {{ 宏(实参,实参...) }}
38 
39         实例:
40         <div>
41             {% macro type_text(name,type) %}
42             <input type="{{ type }}" name="{{ name }}" value="{{ name }}">
43             {% endmacro %}
44 
45             {{ type_text("one","text") }}
46             {{ type_text("two","text") }}
47         </div>
48 
49 ‘‘‘
50 
51 from flask import Flask, render_template
52 
53 app = Flask(__name__)
54 
55 STUDENT = {name: Old, age: 38, gender: },
56 
57 STUDENT_LIST = [
58     {name: Old, age: 38, gender: },
59     {name: Boy, age: 73, gender: },
60     {name: EDU, age: 84, gender: }
61 ]
62 
63 STUDENT_DICT = {
64     1: {name: Old, age: 38, gender: },
65     2: {name: Boy, age: 73, gender: },
66     3: {name: EDU, age: 84, gender: },
67 }
68 
69 
70 # 模板变量和标签使用
71 @app.route(/jinjia2)
72 def data():
73     return render_template(jinjia2daemo.html, st=STUDENT, stl=STUDENT_LIST, std=STUDENT_DICT)
74     # return render_template(‘jinjia2daemo.html‘,**{‘st‘:STUDENT,‘stl‘:STUDENT_LIST,‘std‘:STUDENT_DICT})
75 
76 
77 # 特殊装饰器函数在模板中的全局使用
78 @app.template_global()
79 def sum1(a, b):
80     return a + b
81 
82 
83 @app.template_filter()
84 def sum2(a, b, c, d):  # 第一个参数为模板变量
85     return a + b + c + d
86 
87 
88 if __name__ == __main__:
89     app.run(debug=True)

jinjia2daemo.html

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>data</title>
 6 </head>
 7 <body>
 8 <!--单个模板变量使用-->
 9 <div>
10     <h2>单个学生</h2> {{ st }}
11 </div>
12 <!--模板标签for/if使用-->
13 <div>
14     <h2>列表嵌套字典数据</h2> {{ stl }}
15     <table border="1px">
16         <tr>
17             <td>name</td>
18             <td>age</td>
19             <td>gender</td>
20         </tr>
21         {% for obj in stl %}
22             <tr>
23                 <td>{{ obj.name }}</td>
24                 <td>{{ obj.age }}</td>
25                 <td>
26                     {% if obj.gender in [‘男‘,‘女‘] %}
27                         {{ obj.gender }}
28                     {% else %}
29                         ‘男‘
30                     {% endif %}
31                 </td>
32             </tr>
33         {% endfor %}
34     </table>
35 </div>
36 
37 <div>
38     <h2>字典嵌套字典数据</h2> {{ stl }}
39     <table border="1px">
40         <tr>
41             <td>id</td>
42             <td>name</td>
43             <td>age</td>
44             <td>gender</td>
45         </tr>
46         {% for id,data in std.items() %}
47             <tr>
48                 <td>{{ id }}</td>
49                 <td>{{ data.name }}</td>
50                 <td>{{ data.age }}</td>
51                 <td>
52                     {% if data.gender in [‘男‘,‘女‘] %}
53                         {{ data.gender }}
54                     {% else %}
55                         ‘男‘
56                     {% endif %}
57                 </td>
58             </tr>
59         {% endfor %}
60     </table>
61 </div>
62 
63 
64 <div>
65     <h2>特殊装饰器自定义的函数直接在模板中使用</h2>
66     {{ sum1(1,2) }}
67     <br>
68     {{ 1 | sum2(2,3,4) }}
69 </div>
70 
71 
72 <!--jinjia2模板语言中的宏定义-->
73 <div>
74     <h2>jinjia2模板语言中的宏定义</h2>
75     <div>
76             {% macro type_text(name,type) %}
77             <input type="{{ type }}" name="{{ name }}" value="{{ name }}">
78             {% endmacro %}
79 
80             {{ type_text("one","text") }}
81             {{ type_text("two","text") }}
82         </div>
83 </div>
84 
85 </body>
86 </html>

 

flask之jinjia2模板语言学习

原文:https://www.cnblogs.com/open-yang/p/11177245.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!