项目未找到我的可重用应用程序的管理模板覆盖

时间:2016-08-23 13:12:32

标签: python django django-templates django-admin

我有一个可重用的应用程序,其目录结构如下:

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文件!有谁知道为什么没有找到它?如果需要,我可以发布设置。

1 个答案:

答案 0 :(得分:1)

Django的模板加载器按照INSTALLED_APPS中定义应用的顺序查找模板。在您的情况下,您必须在应用程序之前定义django.contrib.admin,因此Django将始终首先查看并使用它找到的第一个模板。

更改它,以便您的应用在列表中排在第一位:

INSTALLED_APPS = [
    'myapp',
    'django.contrib.admin',
    ...
]