flask中jinjia2模板引擎使用詳解1


在之前的文章中我們介紹過flask調用jinja2模板的基本使用,這次我們來說一下jinjia2模板的使用

Jinja2 在其是一個 Python 2.4 庫之前,被設計 為是靈活、快速和安全的。

模板僅僅是文本文件。它可以生成任何基於文本的格式(HTML、XML、CSV、LaTex 等等)。 它並沒有特定的擴展名, .html 或 .xml 都是可以的。

模板包含 變量 或 表達式 ,這兩者在模板求值的時候會被替換為值。模板中 還有標簽,控制模板的邏輯。模板語法的大量靈感來自於 Django 和 Python 。

下面是一個最小的模板,它闡明了一些基礎。我們會在文檔中后面的部分解釋細節:

<html lang="en">
<head>
    <title>My Webpage</title>
</head>
<body>
    <ul id="navigation">
    {% for item in navigation %}
        <li><a href="{{ item.href }}">{{ item.caption }}</a></li>
    {% endfor %}
    </ul>

    <h1>My Webpage</h1>
    {{ a_variable }}
</body>
</html>

 

通過上面的模板我們能看到主要有兩類標簽組成 {{  }}和{% %}這兩類標簽分別用來包含變量和表達式

如何訪問變量

如果傳入的變量是對象,要訪問對象中的屬性,可以用下面兩種方式:

{{obj.prop}}

{{obj[“prop”]}

兩種方式都會去檢查obj對象中有沒有prop這個屬性以及其中的其它變量,不同的是obj.prop先檢查屬性,obj[“prop”]先檢查變量。

賦值

使用set關鍵字為變量設置值

<h1>Set為變量賦值</h1>
{% set name = 'Han Mei Mei' %}
{{ name }}

 

運行效果

 

 

變量過濾器

變量可以通過過濾器進行修改,變量和過濾器中間用|進行分隔,使用的基本格式是{{變量|過濾器1|過濾器2}},jinja2內置了很多過濾器,通過這些內置過濾器,可以進行變量的修改,內置過濾器可以參考 http://docs.jinkan.org/docs/jinja2/templates.html#builtin-filters ,比如我們要把變量轉成大寫,可以用upper過濾器

 

運行效果:

 

語句過濾器

上面說的是用過濾器過濾一個變量,下面來說一下如何在代碼塊中使用過濾器,上例子:

{% filter upper %}

    This text becomes uppercase

{% endfilter %}

 

運行效果:

 

 

is關鍵字進行變量判斷

is關鍵字用來在表達式中測試變量的值是否滿足某條件。比如判斷變量是否是數字,就可以用

<h1>name is number? {% if name is number %}true{% else  %}false{% endif %}</h1>

 

運行結果:

 

當我們修改一下代碼,成下面的格式,限制輸入為int:

@app.route("/tmpl/<int:name>")
def renderTmpl(name=1):
    return render_template("hello.html",name=name) 

再次運行:

 

Flask內置的is可用的函數參考 : http://docs.jinkan.org/docs/jinja2/templates.html#builtin-tests

 

歡迎關注“挨踢學霸”同名公眾號, 回復jinjia2-1獲取本文源碼下載地址。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM