难以覆盖Django管理模板
我正在Ubuntu 10.10上使用Django 1.2.4。我正在尝试覆盖管理模块的index.html模板。我一直在关注这些。我也看了这个,但我仍然有困难 说明中说要在templates目录中创建一个难以覆盖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}可能会有帮助。) 为了表示我
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 %}