• Django模块之jinja2模版


    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 "哈哈"
    该花的钱要花,该吃的饭要吃。
  • 相关阅读:
    CSP2019-S2总结
    #期望dp#洛谷 6835 [Cnoi2020]线形生物
    #树状数组,概率,离散,双指针#洛谷 6834 [Cnoi2020]梦原
    #容斥,倍数,排列组合#洛谷 2714 四元组统计
    #莫队,bitset#洛谷 3674 小清新人渣的本愿
    #贪心#洛谷 3173 [HAOI2009]巧克力
    #树链剖分,LCA#洛谷 3398 仓鼠找sugar
    #树状数组,哈希#洛谷 6687 论如何玩转 Excel 表格
    小甲鱼Python第八讲课后习题
    小甲鱼Python第七讲课后习题
  • 原文地址:https://www.cnblogs.com/chao666/p/12178043.html
Copyright © 2020-2023  润新知