如何覆盖Django的默认管理模板和布局

时间:2016-09-19 21:05:14

标签: python django

我试图覆盖Django的默认模板。现在只需base_site.html。我试图改变文本django管理。

我做了以下事情:

  1. 我在我的应用目录/opt/mydjangoapp/templates/admin
  2. 中创建了一个文件夹
  3. 然后我将原来的django管理模板文件夹内容复制到admin中,这里是内容: 404.html auth change_list.html delete_selected_confirmation.html index.html pagination.html search_form.html 500.html base.html change_list_results.html edit_inline invalid_setup.html popup_response.html submit_line.html actions.html base_site.html date_hierarchy.html filter.html login.html prepopulated_fields_js.html app_index.html change_form.html delete_confirmation.html包含object_history.html related_widget_wrapper.html
  4. 我更改了base_site.html的内容,因此我有标题' 我的App管理员'而不是' Django Administration '
  5. 我的设置文件如下所示:

    INSTALLED_APPS = (
        'mydjangoapp',
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'debug_toolbar',
    )
    
    ...
    
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': ['/opt/mydjangoapp/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',
                ],
                'debug':True,
                'loaders': (
                     'django.template.loaders.filesystem.Loader',
                     'django.template.loaders.app_directories.Loader'
                ),
            },
        },
    ]
    
  6. 但不幸的是,Django 1.8版本似乎忽略了我的模板更改并加载了原始模板文件。有关如何覆盖管理员原始布局的任何建议。不记得更改标题只是我想要执行的更改的开始吗?

1 个答案:

答案 0 :(得分:2)

首先,确保首先列出您的应用程序,因为Django始终根据settings.INSTALLED_APPS中的顺序从第一个找到它们的应用程序中获取资源。

在这种情况下,应用程序首先列出,但覆盖不起作用,因为模板放在settings.TEMPLATES['DIRS']下列出的全局模板目录下,这些目录与任何特定应用程序无关,并且优先级最低。

如果是这种情况,您必须在应用内移动模板文件夹(例如,/opt/mydjangoapp/mydjangoapp/templates/而非/opt/mydjangoapp/templates/)并在settings.TEMPLATES['DIRS']处擦除参考。