Jinja2模板(2)--變量和控制結構

變量

在Jinja2模板(1)中的例2中,{{name}}結構表示一個變量,它是一種特殊的佔位符,告訴模板引擎這個位置的值從渲染模板時使用的數據中獲取。

Jinja2能識別所有類型的變量。

可以使用過濾器修改變量:過濾器名添加在變量名之後,中間使用豎線分隔開,如,下面的模板以首字母大寫形式顯示變量name的值:

   Hello, {{name | capitalize}}

Jinja2常用的過濾器

1.safe:渲染值時不轉義(需要顯示變量中存儲的HTML代碼時候,可以使用safe過濾器,注:在不可信的值上不要使用此過濾器)

2.capitalize:把值的首字母轉換成大寫,其他字母轉換成小寫

3.lower:把值轉換成小寫形式

4.upper:把值轉換成大寫形式

5.title:把值中每個單詞的首字母都轉換成大寫

6.trim:把值的首尾空格去掉

7.striptags:渲染前把值中所有的HTML標籤都刪掉

控制結構

1.條件控制語句
{% if user %}
    Hello, {{ user }}!
{% else %}
    Hello, Stranger!
{% endif %}

2.for循環渲染一組元素

<ul>
    {% for comment in comments %}
        <li>{{ comment }}</li>
    {% endfor %}
</ul>

3.還支持宏,類似於Python代碼中的函數

{% macro render_comment(comment) %}
    <li>{{ comment }}</li>
{% endmacro %}

<ul>
    {% for comment in commets %}
        {{ render_comment(comment) }}
    {% endfor %}
</ul>


4.若要重複使用宏,可將其保存在單獨的文件中,然後在需要使用的模板中導入

{% import 'macros.html' as macros %}
<ul>
    {% for comment in comments %}
        {{ macros.render_comment(comment) }}
    {% endfor %}
</ul>

5.模板繼承

首先,創建一個名爲base.html的基模板

<html>
<head>
    {% block head %}
        <title>{% block title %}{% endblock %} - My Application </title>
    {% endblock %}
</head>
<body>
    {% block body %}
    {% endblock %}
</body>
</html>

block標籤定義的元素可以在衍生模板中修改。下例爲基模板的衍生模板:

{% extends "base.html" %}
{% block title %} Index {% endblock %}
{% block head %}
    {{ super() }}
    <style>
    </style>
{% endblock %}
{% block body %}
<h1>Hello World!</h1>
{% endblock %}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章