Django - 扩展全局静态HTML模板

时间:2017-09-14 13:40:16

标签: django django-templates

描述

如何使用以下文件夹结构

在我的应用中扩展base.html

文件夹结构

└───project
    ├───plots # <-- app
    ├───project 
    ├───projects # <-- app
    ├───static # <-- project static files
    │   ├───css
    │   ├───html
    │   └───img
    └───users # <-- app

设置文件

STATIC_URL = '/static/'

STATICFILES_DIRS = [
   os.path.join(BASE_DIR, 'static')
]

我通过static - {% load static %}

使用{% static '/css/base.css' %}个文件

我也知道如何使用{% extends file %} - {% extends users/html/base.html %}

我想extend来自static这样的{% extends 'html/base.html' %}文件夹,但是我找不到如何实现这种关系的方法。

替代解决方案

我找到了另一种方法来让它在项目设置文件中修改templates条目。它可以工作,但如果可能的话,我想将所有静态文件保存在一个地方。

文件夹结构

└───project
    ├───plots # <-- app
    ├───project 
    ├───projects # <-- app
    ├───static # <-- project static files
    │   ├───css
    │   └───img
    ├───templates #<-- !now `base.html` is here!
    └───users # <-- app

设置

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

1 个答案:

答案 0 :(得分:1)

Templates设置中

  

DIRS定义了一个目录列表,引擎应按搜索顺序查找模板源文件。

    'DIRS': [
        os.path.join(BASE_DIR, 'templates')
    ],

如果您希望模板引擎查看其他文件夹或替换当前文件夹,只需将其添加

即可

此外,模板和静态文件之间存在很大差异