Django使用jinja2模板

Django使用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

1. 在项目文件中创建 jinja2_env.py 文件

from jinja2 import Environment

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

    return env

说明:这里创建我们自己的environment替代jinja2中自带的environment,用于后续的拓展,比如自定义过滤器

2.在settings.py文件

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.jinja2.Jinja2',#修改1
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS':True,
        'OPTIONS':{
            'environment': 'jinja2_env.environment',# 修改2,使用自定义的environment
            '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模板的使用

  • 绝大多数和Django自带模板一样

  • 没有多行注释
  • 循环使用loop关键字

4. jinja2自定义过滤器

在jinja2_env.py文件中自定义过滤器
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 "哈哈"

说明:自定义过滤器后,在模板中{{}}中可以直接使用:

{{do_listreverse(参数)}}

 

posted @ 2021-01-19 22:11  foreast  阅读(189)  评论(0编辑  收藏  举报