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 "哈哈"
相关文章
相关标签/搜索