从 Django1.8 开始,支持第三方模板引擎
使用如下命令安装 Jinja2
pip install jinja2
首先,在项目配置目录下建立一个jinja2_env.py,内容如下
# from __future__ import absolute_import # 如果是py2就取消这行的注释
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
然后在 setting.py 设置
CONTEXT_PROCESSORS = [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': CONTEXT_PROCESSORS,
},
},
{
'BACKEND': 'django.template.backends.jinja2.Jinja2',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': CONTEXT_PROCESSORS,
'environment': 'APP_NAME.jinja2_env.environment',
},
},
]
在 Django 模板中,url 和 static 函数应该像如下使用
{% url 'auth:login' parameter %}
{% static 'image/avatar/1.jpg' %}
而在 Django 的 Jinja2 中需要更改成如下方式
{% url('auth:login', args=(1,)) %}
{% static('image/avatar/1.jpg') %}
在 url 函数中的 args 是用来传参的元组,所以不能省略后面的逗号