Django教程-Django中配置jinja2模板


http://www.python-china.com/html/165.html

 

 

Django教程-Django中配置jinja2模板

  • 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

    2.1 在项目目录(manage.py同级目录)中创建 jinja2_env.py文件,并加入如下代码:

    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

     

    2.2在settings.py文件把原来的TEMPLATES代码改为如下代码:

    '''
    模板 参考:https://www.jianshu.com/p/571ba944b4e2
    其实就是前台和后台的模板引擎分开,前台模板引擎是jinja2,后台的模板引擎是django默认的引擎
    '''
    TEMPLATES = [
        # 默认的模板引擎,用来后台admin
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
    # 调用模板的原理就是默认在每个应用下面搜索templates文件夹,如果'DIRS': ['']为空,则默认是admin下面的templates文件夹
            'DIRS': [''],
            'APP_DIRS': True,
            'OPTIONS': {'context_processors': [
        'django.template.context_processors.debug',
        'django.template.context_processors.request',
        'django.contrib.auth.context_processors.auth',
        'django.contrib.messages.context_processors.messages',
    ], },
        },
        # jinja2模板,用来前台显示
        # 因为前台子应用的apps下面没有默认的templates文件夹,所以就用'DIRS': [os.path.join(BASE_DIR, 'templates')下的模板文件夹
        #         ],
        {
            'BACKEND': 'django.template.backends.jinja2.Jinja2'
            ,
            'DIRS': [
                os.path.join(BASE_DIR, 'templates'),
            ],
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
        'django.template.context_processors.debug',
        'django.template.context_processors.request',
        'django.contrib.auth.context_processors.auth',
        'django.contrib.messages.context_processors.messages',
    ],
                'environment':'my_jinja2.environment',
     
            },
        },
    ]

     

  • 3,jinja2模板安装完成

    jinja2模板的使用绝大多数和Django自带模板一样

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM