Jinja的基礎知識
介紹:Jinja2 是一個現代的,設計者友好的,仿照 Django 模板的 Python 模板語言。 它速度快,被廣泛使用,并且提供了可選的沙箱模板執行環境保證安全
基本操作
變量:使用{{}}包圍
<a>{{user.username}}</a>
注釋:注釋代碼塊使用 {# Documents #} 來表示
控制語句:使用{{% 控制流程 %}}來編寫控制代碼塊
{% if a %}<p>hello a</p> {% else %}<p>hello b</p> {% endif %}
循環:
在 Jinja 中需要同時使用循環語句和 if 語句來模擬 continue 語句的功能。
可以使用 Jinja 提供的 loop 變量來模型 Python 中的
enumerate()
內置函數的功能。 loop 變量可以返回一些關于 for 循環的信息,如: 索引號。
# example1{% for post in posts if post.text %}<div><h1>{{ post.title }}</h1><p>{{ post.text | safe }}</p></div> {% endfor %}# example2{% for post in posts %}{{ loop.index }}-{{ post.title }} {% endfor %}
過濾器:用于處理變量代碼塊中的變量。過濾器與變量用管道符號(
|
)分割,并且也 可以用圓括號傳遞可選參數。多個過濾器可以鏈式調用,前一個過濾器的輸出會被作為 后一個過濾器的輸入。
常用過濾器:http://blog.csdn.net/jmilk/article/details/53292248# 有參數{{ variable | filter_name }}# 或無參數{{ variables | filter_name(*args) }}
宏:類似于函數,會返回一個 Jinja 模板或 HTML 字符串。其最主要的功能就是提高代碼的重用性。如:
{% macro input(name, label, value='', type='text')%}<div class="form-group"><label for"{{ name }}">{{ label }}</div><input type="{{ type }}" name="{{ name }}"value="{{ value | escape }}" class="form-control"></div> {% endmacro %}
input()
:是宏的名字,類似于函數名(name, label, value='', type='text')
:是宏的參數,類似于函數的必備參數和缺省參數調用
{{ input('name', 'Name') }}
- 結果
<div class="form-group"><label for"name">Name</div><input type="text" name="name"value="" class="form-control"></div>
文章參考自:
http://blog.csdn.net/jmilk/article/details/53264049
http://docs.jinkan.org/docs/jinja2/templates.html#id7