http://www.python-china.com/html/165.html
Django教程-Django中配置jinja2模板
-
jinja2介紹
Jinja2:是 Python 下一個被廣泛應用的模板引擎,是由Python實現的模板語言,他的設計思想來源於 Django 的模板引擎,並擴展了其語法和一系列強大的功能,尤其是Flask框架內置的模板語言
由於django默認模板引擎功能不齊全,速度慢,所以我們也可以在Django中使用jinja2, jinja2宣稱比django默認模板引擎快10-20倍。
Django主流的第三方APP基本上也都同時支持Django默認模板及jinja2,所以要用jinja2也不會有多少障礙。
-
1,安裝jinja2模塊
pip install jinja2
-
2,Django配置jinja2
2.1 在項目目錄(manage.py同級目錄)中創建 jinja2_env.py文件,並加入如下代碼:
from django.contrib.staticfiles.storage import staticfiles_storage from django.urls import reverse from jinja2 import Environment def environment(**options): env = Environment(**options) env.globals.update({ 'static': staticfiles_storage.url, 'url': reverse, }) return env
2.2在settings.py文件把原來的TEMPLATES代碼改為如下代碼:
''' 模板 參考:https://www.jianshu.com/p/571ba944b4e2 其實就是前台和后台的模板引擎分開,前台模板引擎是jinja2,后台的模板引擎是django默認的引擎 ''' TEMPLATES = [ # 默認的模板引擎,用來后台admin { 'BACKEND': 'django.template.backends.django.DjangoTemplates', # 調用模板的原理就是默認在每個應用下面搜索templates文件夾,如果'DIRS': ['']為空,則默認是admin下面的templates文件夾 'DIRS': [''], 'APP_DIRS': True, 'OPTIONS': {'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, # jinja2模板,用來前台顯示 # 因為前台子應用的apps下面沒有默認的templates文件夾,所以就用'DIRS': [os.path.join(BASE_DIR, 'templates')下的模板文件夾 # ], { 'BACKEND': 'django.template.backends.jinja2.Jinja2' , 'DIRS': [ os.path.join(BASE_DIR, 'templates'), ], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], 'environment':'my_jinja2.environment', }, }, ]
-
3,jinja2模板安裝完成
jinja2模板的使用絕大多數和Django自帶模板一樣