Django模塊之jinja2模版

Jinja2:是 Python 下一個被普遍應用的模板引擎,是由Python實現的模板語言,他的設計思想來源於 Django 的模板引擎,並擴展了其語法和一系列強大的功能,尤爲是Flask框架內置的模板語言。html

因爲django默認模板引擎功能不齊全,速度慢,因此咱們也能夠在Django中使用jinja2, jinja2宣稱比django默認模板引擎快10-20倍。django

Django主流的第三方APP基本上也都同時支持Django默認模板及jinja2,因此要用jinja2也不會有多少障礙。後端

使用jinja2模版流程:

1. 安裝第三方模塊:

pip intall jinja2 -i 鏡像源

你們在安裝時,最好指定一下鏡像源,不然國內牆過高爬過來多多少收都會有點慢的。框架

2. 配置jinja2:

  2.1 在Django項目中建立jinja2文件,並建立環境對象:

from jinja2 import Environment

def environment(**options):
    env = Environment(**options)

    return env

  2.2 在Django項目的配置文件中配置jinja2模版信息:

注意:spa

  配置文件即Django項目信息的配置文件,通常命名爲setting.py、dev.py、prop.py。debug

  在配置文件中配置jinja2模版時,須要先將Django配置文件中自帶的模版配置信息註釋或刪除。設計

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.jinja2.Jinja2',#修改1
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS':True,
        'OPTIONS':{
            'environment': 'jinja2_env.environment',# 修改2
            'context_processors':[
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

3. 使用jinja2渲染html模版:

  3.1 編寫視圖,返回jinja2模板,並傳遞數據進行渲染。

class IndexView(View):
    
    def get(self, request):
        context = {
            'key':'value',
            'msg':'Hello Jinja2'
        }
        return render(request, 'index.html', context)

  3.2 在HTML模版中接收後端傳遞的jinja2語法的數據

{% if key%}
    <span class="error_tip">{{ key}}</span>
{% endif %}

{% if msg%}
    <span class="error_tip">{{ msg}}</span>
{% endif %}

4. jinja2的過濾器:

5. 自定義jinja2過濾器

在jinja2環境文件中,進行自定義jinja2過濾器:code

from jinja2 import Environment

def environment(**options):
    env = Environment(**options)

    # 2.將自定義的過濾器添加到 環境中
    env.filters['do_listreverse'] = do_listreverse

    return env

# 1.自定義過濾器
def do_listreverse(li):
    if li == "B":
        return "哈哈"
相關文章
相關標籤/搜索