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环境 }, }, ]