用flask開發個人部落格(10)—— Jinja2模板中的控制結構
阿新 • • 發佈:2018-12-31
一 引言
模板,就是認為建立的一套用來管理資料的規則.其實從程式設計的角度來說,我們所使用的程式語言也可以理解成為一種模板的語言,而對應的程式語言檔案就是模板檔案,如cpp,py,cs檔案等等.最近我們做專案,用word做了一套模板,也是類似.既然類似程式語言,那麼模板中最重要的兩個部分應該就是變數和控制邏輯,上一文介紹了Jinja2模板中的變數,下面介紹下模板中的控制結構。
二 條件判斷if語句:
{% if condition %}
...
{% else %}
...
{% endif %}
在模板檔案中實現,輸入使用者名稱時瀏覽器上顯示Hello 使用者名稱,若不輸入使用者名稱顯示Hello Stranger:
if.html:
{% if user %}
<h1>Hello {{user}}</h1>
{% else %}
<h1>Hello Stranger</h1>
{% endif %}
test.py:
@app.route('/if')
def if():
return render_template('if.html',user='liuzhihui')
三 for迴圈語句:
for.html:
<ul> {% for comment in comments %} <li>{{ comment}}</li> {% endfor %} </ul>
test.py:
@app.route('/')
def index():
comments=['nihao','123','asd','zxc']
return render_template('test.html',comments=comments)
四 巨集macro:
模板中支援巨集替換,巨集的定義格式如下:
{% macro render_comment(comment) %}
<li>{{ comment }}</li>
{% endmacro %}
使用巨集方法如下:
<ul> {% for comment in comments %} {{ render_comment(comment) }} {% endfor %} </ul>
為了重複使用巨集,可以將巨集的定義放到單獨檔案中,並在程式碼中引用:
{% import 'macro.html' as macros %}
<ul>
{% for comment in comments %}
{{ macros.render_comment(comment) }}
{% endfor %}
</ul>
克隆本專案:
git clone git@github.com:HymanLiuTS/flaskTs.git
獲取本文原始碼:
git checkout FL10