1 @app.route('/') 2 def hello_world(): 3 return render_template('index.html') 4 5 6 {% macro input(name="",value="",type="text") %} 7 <input type="{{ type }}" name="{{ name }}" value="{{ value }}"> 8 {% endmacro %} 9 10 <h1>Jinja2宏</h1> 11 <table> 12 <tbody> 13 <tr> 14 <td>用戶名:</td> 15 <td>{{ input('username') }}</td> 16 </tr> 17 <tr> 18 <td>密碼:</td> 19 <td>{{ input('username',type="password") }}</td> 20 </tr> 21 <tr> 22 <td></td> 23 <td>{{ input('username',type="submit",value="提交") }}</td> 24 </tr> 25 </tbody> 26 </table>
以上是基本的宏定義方法。html
一,導入宏app
若是把宏寫到其餘的html代碼中,那麼只須要這樣引入。spa
在html中第一行輸入:ssr
1, {% from 'macro.html' import input %}3d
2, {% from 'macro.html' import input as 別名 %}code
使用別名後記得把input也改成別名。htm
3, {% import 'macro.html' as 別名 %}blog
這裏是導入了macro.html這個文件且去了別名,使用的時候爲:input
別名.inputit
二,include
做用:每一個網頁中共同的部分,只寫一次,而後引用它。
語法:{% include header.html%}
示例:
{% include header.html%}
content
{% include footer.html%}
三,set和with
使用set語句定義變量。
語法:{% set user =''知了'' %},一旦定義了這個變量,那麼在後面的代碼中均可以使用這個變量。
示例:
{% set user =''知了'' %}
用戶名:{{ user }}
with的用法:只能做用在代碼塊中,他是帶endwidth的。
{% with user =''知了'' %}
用戶名:{{ user }}
{% endwith %}
還有一種with和set結合的用法:
{% with %}
{% set classroom = "知了" %}
<p> {{ classroom }} </p>
{% endwidth %}
這樣就可以作到把set限定在代碼塊而非整個文件中。