码迷,mamicode.com
首页 > 其他好文 > 详细

Django模块之jinja2模版

时间:2020-01-10 22:35:58      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:imp   注释   option   setting   back   环境   color   pytho   png   

Jinja2:是 Python 下一个被广泛应用的模板引擎,是由Python实现的模板语言,他的设计思想来源于 Django 的模板引擎,并扩展了其语法和一系列强大的功能,尤其是Flask框架内置的模板语言。

由于django默认模板引擎功能不齐全,速度慢,所以我们也可以在Django中使用jinja2, jinja2宣称比django默认模板引擎快10-20倍。

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模版信息:

注意:

  配置文件即Django项目信息的配置文件,一般命名为setting.py、dev.py、prop.py。

  在配置文件中配置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过滤器:

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 "哈哈"

Django模块之jinja2模版

标签:imp   注释   option   setting   back   环境   color   pytho   png   

原文地址:https://www.cnblogs.com/chao666/p/12178043.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!