Flask Jinja2模板語言
阿新 • • 發佈:2021-02-07
技術標籤:# 08 python Flask
Jinja2有如下常用語法
基本用法
註釋
html檔案中,註釋掉Jinja2語句需要使用 {# #}。某些情況使用 <!-- -->可能起作用,但是對於Jinja2語句的註釋還是建議使用{# #}會安全一些。
{# #}
引用或執行
{{ }}
邏輯程式碼
{% %}
變數設定
變數設定
{% with %} {% set links=[ {1:"a", 2:"b"}, {3:"c", 4:"d"}, {3:"c", 4:"d"} ]%} {# "{% endwith %} #} {{ links }} {% endwith %}
變數作用域確定
{% with %} {% endwith %}
執行結果:
迴圈語句
使用上例中的links
{% for link in links %} <p>{{ link }}</p> {% endfor %}
執行結果:
條件語句
{% for i in range(12) %} {% if i > 10 %} <span style="color: red">{{ i }}</span> {% elif i%2==0 %} <span style="color: black">{{ i }}</span> {% else %} <span style="color: blue">{{ i }}</span> {% endif %} {% endfor %}
執行結果:
高階用法
模板繼承
直接在需要繼承模板的檔案中使用如下語句:
{% extends 'xxx.html' %}
模組複用
{% block xxx %} {% endblock %} # 模板中定義模組
{% block xxx %} {% 自己的內容 %} {% endblock %} # 在繼承模板的檔案中使用模組
模組引用
直接在需要引用模板的檔案中使用如下語句:
{% include 'xxx.html' %} # 單個模組檔案引用 {% include ['xxx.html', 'yyy.html'] %} # 多個模組檔案引用
巨集函式使用
模組巨集定義後匯入使用 {% import "ui/admin_page.html" as pg %}
巨集定義使用例項:分頁
匯入跨資料夾匯入:
{% import "ui/admin_page.html" as pg %}
使用:
{{ pg.page(page_data, 'admin.tag_list') }}
巨集定義內容:movie2101/app/templates/ui/admin_page.html內容
{% macro page(data, url) -%} {% if data %} <ul class="pagination pagination-sm no-margin pull-right"> <li><a href="{{ url_for(url, page=1) }}">首頁</a></li> {% if data.has_prev %} <li><a href="{{ url_for(url, page=data.prev_num) }}">上一頁</a></li> {% else %} <li class="disabled"><a href="#">上一頁</a></li> {% endif %} {% for v in data.iter_pages() %} {% if v == data.page %} <li class="active"><a href="#">{{ v }}</a></li> {% else %} <li><a href="{{ url_for(url, page=v) }}">{{ v }}</a></li> {% endif %} {% endfor %} {% if data.has_next %} <li><a href="{{ url_for(url, page=data.next_num) }}">下一頁</a></li> {% else %} <li class="disabled"><a href="#">下一頁</a></li> {% endif %} <li><a href="{{ url_for(url, page=data.pages) }}">尾頁</a></li> </ul> {% endif %} {%- endmacro %}
例項詳細學習參考在FLask中利用macro實現分頁元件