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