模板案例
eg:
<!doctype html>
<title>Hello template</title>
{% if name %}<h1>Hello {{ name }}!</h1>
{% else %}<h1>Hello flask!</h1>
{% endif %}
從上面的例子可以發現:
模板表達式是包含在分割符{{}}內
模板的控制語句都是包含在分割{% %}中
模板注釋都是包含在分隔符{# #}中
- 變量 : 視圖傳遞過來的數據 {{ 變量名稱 }}
- 標簽 : 就是python中的循環\分支結構... {% 標簽名稱 %}
表達式分類
表達式一般分為以下幾種:
表達式種類 | 舉例 |
---|---|
變量(最常用) | {{name}} |
基礎類型( 字符串,數值,列表,元祖,字典,布爾值) | 一般配合表達式使用{{ 'string' }} |
運算表達式(算術與邏輯) | {{ False and True }} {{ 2 + 3 }} |
過濾器' | ' ,測試器' is ' | 一般配合表達式 |
函數調用 | {{ func( ) }} |
“in”操作符 | {{ 1 in [1,2,3] }} |
字符串連接符”~” | {{ 'like' }} |
變量過濾器
java模板引擎?變量的值可以使用過濾器修改。過濾器在添加變量名之后,兩者之間以豎線分隔。例如,下述模板把name變量的值變成首字母大寫的形式:
Hello, {{name|capitalize}}
下面是Jinja2變量過濾器
過濾器名 | 說明 |
---|---|
safe | 渲染值時不轉義 |
capitalize | 把值的首字母轉換成大寫,其他字母轉換成小寫 |
lower | 把值轉換成小寫形式 |
upper | 把值轉換成大寫形式 |
title | 把值中每個單詞的首字母都轉換成大寫 |
trim | 把值首尾空格刪掉 |
striptages | 渲染之前把值中所有的HTML標簽都刪掉 |
控制結構
在模板中使用條件判斷語句
{% if user %}Hello, {{ user }} !
{% else %}Hello, Stranger !
{% endif %}
for循環渲染一組元素
<ul>
{% for comment in comments %}<li>{{ comment }}</li>
{% endfor %}
</ul>