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 @   foreast  阅读(757)  评论(0编辑  收藏  举报
编辑推荐:
· 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语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示