You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django中使用Jinja2继承其他App的模板?

解决Django Jinja2跨App模板继承的TemplateNotFound问题

问题场景

现有多Django项目,计划将通用功能提取至独立App中,当前项目结构如下:

myproject/
         app1/
             jinja2/
                    app1/
                          app1.html
         app2/
             jinja2/
                    app2/
                          app2.html

尝试在app2.html中继承app1.html,使用语句:

{% extends "app1/app1.html" %}

触发错误:jinja2.exceptions.TemplateNotFound: app1/app1.html

当前settings.py中的Jinja2模板配置:

TEMPLATES = [
    { 
        'BACKEND':'django.template.backends.jinja2.Jinja2',
        'DIRS': [ PROJECT_DIR / 'jinjatemplates' ],
        'APP_DIRS': True,
        },
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        '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',
            ],
        },
    },
]

解决方案

方案1:添加App模板目录到Jinja2配置

修改settings.py中Jinja2的DIRS字段,将app1的jinja2目录加入搜索路径:

TEMPLATES = [
    { 
        'BACKEND':'django.template.backends.jinja2.Jinja2',
        'DIRS': [ 
            PROJECT_DIR / 'jinjatemplates',
            PROJECT_DIR / 'app1' / 'jinja2',  # 新增app1的jinja2目录
        ],
        'APP_DIRS': True,
        },
    # ... 其余配置保持不变
]

添加后Jinja2即可正确定位到app1/app1.html模板路径。

方案2:统一通用模板到项目级目录

将app1.html迁移至项目根目录的jinjatemplates/app1/下(即已配置的DIRS目录),目录结构变为:

myproject/
         jinjatemplates/
                    app1/
                          app1.html
         app2/
             jinja2/
                    app2/
                          app2.html

这种方式更便于集中管理通用模板,且无需修改额外配置。

方案3:确认App已注册到INSTALLED_APPS

确保app1已添加至settings.py的INSTALLED_APPS列表,否则即使APP_DIRS=True,Django也不会扫描该App的模板目录:

INSTALLED_APPS = [
    # ... 其他已注册App
    'app1',
    'app2',
]

内容的提问来源于stack exchange,提问作者user22066066

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 19:37:51