1. 程式人生 > >用flask開發個人部落格(10)—— Jinja2模板中的控制結構

用flask開發個人部落格(10)—— Jinja2模板中的控制結構

一 引言

        模板,就是認為建立的一套用來管理資料的規則.其實從程式設計的角度來說,我們所使用的程式語言也可以理解成為一種模板的語言,而對應的程式語言檔案就是模板檔案,如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