1. 程式人生 > 其它 >Flask Jinja2模板語言

Flask Jinja2模板語言

技術標籤:# 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實現分頁元件

過濾器的使用