Django项目使用jinja2模板

1. 安装Jinja2扩展包

pip install Jinja2

2. 配置Jinja2模板引擎

1.在主工程下创建存放模板的文件夹:

 

 标记文件夹为模板文件夹并设置模板语言为jinja2, 做了这一步后,在模板中写代码会有提示

 

 

配置jinja2引擎和模板路径

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.jinja2.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',
            ],
        },
    },
]

3. 补充Jinja2模板引擎环境(这一步为了增强jinja2模板的功能)

1.在主工程下创建包utils, 用于存放工具类,并在包下创建jinja2_env.py(文件名随意)的文件

 

 2. 在jinja2_env.py文件中定义static和url方法的功能:

from jinja2 import Environment
from django.contrib.staticfiles.storage import staticfiles_storage
from django.urls import reverse


def jinja2_env(**opts):
    env = Environment(**opts)
    env.globals.update({
        "static": staticfiles_storage.url,  # 获取静态文件前缀
        "url": reverse  # 反向解析
    })
    return env

说明:

  • 定义了static和url方法功能
  • static获取文件前缀, 实现了在模板中简化路径编写
  • 将url和reverse方法绑定,可通过url方法在模板中完成重定向

  •  如果url有路径参数,使用url方法时,这样传:url("重定向的位置", args=(arg1, arg2...))

 

3. 配置我们自定义的jinja2环境:

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":'meiduo_mall.utils.jinja2_env.jinja2_env',    # jinja2环境
        },
    },
]

 

posted @ 2021-01-23 21:45  foreast  阅读(689)  评论(0编辑  收藏  举报