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环境 }, }, ]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构