难以覆盖Django管理模板

难以覆盖Django管理模板,django,django-admin,Django,Django Admin,我正在Ubuntu 10.10上使用Django 1.2.4。我正在尝试覆盖管理模块的index.html模板。我一直在关注这些。我也看了这个,但我仍然有困难 说明中说要在templates目录中创建一个admin目录: templates/ admin/ index.html 我想覆盖index.html中的单个块。(真的,我想做的就是在末尾添加一些文本。有没有比复制/粘贴整个块并更改它更简单的方法?)(更新:{{block.super}可能会有帮助。) 为了表示我

我正在Ubuntu 10.10上使用Django 1.2.4。我正在尝试覆盖管理模块的index.html模板。我一直在关注这些。我也看了这个,但我仍然有困难

说明中说要在templates目录中创建一个
admin
目录:

templates/
    admin/
         index.html
我想覆盖
index.html
中的单个块。(真的,我想做的就是在末尾添加一些文本。有没有比复制/粘贴整个块并更改它更简单的方法?)(更新:
{{block.super}
可能会有帮助。)

为了表示我正在重写,我将其放在
index.html的顶部:

{% extends "admin/index.html" %}
当然,这会导致堆栈溢出(来自终端):


我做错了什么?

不确定你是否找到了答案,但你需要改变

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

因为这是原始index.html页面覆盖的内容。因为Django系统会在使用默认的admin文件夹之前搜索模板文件夹,所以在本例中,它会在模板中找到admin/index.html,然后尝试使用extend来扩展自身(因此出现递归错误)

作为参考,您也可以在模板中自定义
base\u site.html
,它扩展了
base.html
。最好是从以下位置复制原件:

/usr/local/lib/python2.6/dist-packages/django/contrib/admin/templates/

然后将其粘贴到templates文件夹中作为起点

递归错误是因为您正在扩展自身的
admin/index.html

您可以:

  • 将整个
    admin/index.html
    模板复制到
    templates/admin/
    目录中,它将用您的模板替换默认模板
  • 如前所述,覆盖每个应用程序或模型的
    index.html

我知道这是迟来的问题,但你知道,谷歌旅行…

修改settings.py与一个额外的模板文件夹,例如:

TEMPLATE_DIRS = (
    # Put strings here, like "/home/html/django_templates".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    "/home/mysite/webapps/django/myproject/templates",
    "/home/mysite/webapps/django/lib/python2.7/django/",  # extra folder
)
然后在myproject/templates/admin中添加您自己的index.html,如:

{% extends "contrib/admin/templates/admin/index.html" %}

{% block branding %}
    <h1 id="site-name">Administration for TheLittleButtonCo</h1>
{% endblock %}
{%extends“contrib/admin/templates/admin/index.html”%}
{%block-branding%}
小按钮的管理
{%endblock%}

显然,变化是可能的。这适用于Django 1.3.1 final

我使用了一个额外的包,名为

如何在不硬编码的情况下指定jdango安装的路径?@maazza:
导入Django;os.path.dirname(django.\uuuu文件)
/usr/local/lib/python2.6/dist-packages/django/contrib/admin/templates/
TEMPLATE_DIRS = (
    # Put strings here, like "/home/html/django_templates".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    "/home/mysite/webapps/django/myproject/templates",
    "/home/mysite/webapps/django/lib/python2.7/django/",  # extra folder
)
{% extends "contrib/admin/templates/admin/index.html" %}

{% block branding %}
    <h1 id="site-name">Administration for TheLittleButtonCo</h1>
{% endblock %}