Jinja2:是 Python 下一個被普遍應用的模板引擎,是由Python實現的模板語言,他的設計思想來源於 Django 的模板引擎,並擴展了其語法和一系列強大的功能,尤爲是Flask框架內置的模板語言。html
因爲django默認模板引擎功能不齊全,速度慢,因此咱們也能夠在Django中使用jinja2, jinja2宣稱比django默認模板引擎快10-20倍。django
Django主流的第三方APP基本上也都同時支持Django默認模板及jinja2,因此要用jinja2也不會有多少障礙。後端
pip intall jinja2 -i 鏡像源
你們在安裝時,最好指定一下鏡像源,不然國內牆過高爬過來多多少收都會有點慢的。框架
from jinja2 import Environment def environment(**options): env = Environment(**options) return env
注意: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', ], }, }, ]
class IndexView(View): def get(self, request): context = { 'key':'value', 'msg':'Hello Jinja2' } return render(request, 'index.html', context)
{% if key%} <span class="error_tip">{{ key}}</span> {% endif %} {% if msg%} <span class="error_tip">{{ msg}}</span> {% endif %}
在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 "哈哈"