我有一个可重用的应用程序,其目录结构如下:
myapp/
myapp/
views.py
models.py
...etc
templates/
myapp/
template1.html
...etc
admin/
index.html
test/
...testing stuff
setup.py
...etc
我正在覆盖index.html
管理员模板,以便我可以在{% block userlinks %}
中添加一些其他链接,这些链接在使用我的应用时会显示在项目的导航中。
但是,在项目中使用我的应用程序时,管理主页仍然使用Django自己的index.html
文件。项目本身有一个base_site.html
,但模板继承图(在django-debug-toolbar
中)如下所示:
/path/to/virtualenv/django/contrib/admin/templates/admin/index.html
/projectpath/projectname/templates/admin/base_site.html
/path/to/virtualenv/django/contrib/admin/templates/admin/base.html
...第一个条目应该是我应用的模板目录中的index.html
文件!有谁知道为什么没有找到它?如果需要,我可以发布设置。
答案 0 :(得分:1)
Django的模板加载器按照INSTALLED_APPS
中定义应用的顺序查找模板。在您的情况下,您必须在应用程序之前定义django.contrib.admin
,因此Django将始终首先查看并使用它找到的第一个模板。
更改它,以便您的应用在列表中排在第一位:
INSTALLED_APPS = [
'myapp',
'django.contrib.admin',
...
]