覆盖django 1.11中的管理模板

时间:2017-08-24 03:33:00

标签: django

我没有让django 1.11接受新的base_site.html:

按照文档和一些帖子我将文件复制到: BASE_DIR / templates / base_site.html和 BASE_DIR /模板/管理/ base_site.html

在settings.py中

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        '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',
            ],
            'loaders': (
                 'django.template.loaders.filesystem.Loader',
                 'django.template.loaders.app_directories.Loader',
            ),
        },
    },
]

我尝试使用模板和templates / admin中的文件:

>>> print ( os.path.isfile((os.path.join(settings.BASE_DIR, 'templates', 'admin','base_site.html'))) )
True
>>> print ( os.path.isfile((os.path.join(settings.BASE_DIR, 'templates', 'base_site.html'))) )
True

3 个答案:

答案 0 :(得分:2)

如果您想覆盖管理文件,则必须exist in admin folder inside templates folder如下所示 your_project

your_project
     |-- your_project/
     |-- myapp/
     |-- templates/
          |-- admin/
             |-- base_site.html

此处文件名base_site.html必须与原始admin文件夹中的文件名相同。

base_site.html

{% extends "admin/base.html" %}

# you can write changes here

答案 1 :(得分:1)

只是遇到了这个问题,并通过安装django-apptemplates并将其作为加载程序添加到settings.py中,从字面上解决了该问题:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [PROJECT_DIR],
        'APP_DIRS': False,
        'OPTIONS': {
            'loaders': [
                # ADD LOADER HERE
                'apptemplates.Loader',
                'django.template.loaders.filesystem.Loader',
                'django.template.loaders.app_directories.Loader',
            ],
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

**必须将APP_DIRS设置为False才能使它工作

答案 2 :(得分:0)

要覆盖Django admin的base_site.html,请添加自定义base_site.html,使其路径为BASE_DIR / templates / admin / base_site.html。这也适用于Django 1.11。