Django 1.6.11
App结构如下:
my_project/
|-- new_app/
|-- templates/
在我的配置中:
TEMPLATE_ROOT = os.path.join(BASE_ROOT, 'templates/')
TEMPLATE_DIRS = (
TEMPLATE_ROOT,
)
INSTALLED_APPS = (
'django.contrib.admin',
...
'new_app',
)
我还尝试在new_app
之前列出contrib.admin
,但没有帮助。
当我将venv/django/contrib/admin/templates/admin/change_list.html
复制到我的/templates/admin/new_app/change_list.html
时,我看不到我的自定义设置。
my_project/
|-- new_app/
|-- templates/
|-- admin/
|-- new_app/
|-- change_list.html
当我将change_list.html向上移动一级以使其位于管理路径下时,更改显示正常:
my_project/
|-- new_app/
|-- templates/
|-- admin/
|-- change_list.html
|-- new_app/ (now an empty folder)
...但当然这意味着我的更改将影响每个管理页面,而不仅仅是我正在尝试修改的应用程序。
我已将此添加到应用程序在admin.py中的唯一模型:
class MyModelAdmin(reversion.VersionAdmin):
change_list_template = 'admin/new_app/change_list.html'
...这给了我一些我需要的东西,但我也需要change_list_results.html,并且没有ModelAdmin覆盖。
我正在遵循第31页第2.4.8节readthedocs中找到的文档指南,但我似乎没有运气。
答案 0 :(得分:8)
当多个应用程序提供相同资源的不同版本(模板,静态文件,管理命令,转换)时,INSTALLED_APPS中首先列出的应用程序具有优先权。见docs。
变化:
INSTALLED_APPS = (
'django.contrib.admin',
...
'new_app',
)
要:
INSTALLED_APPS = (
'new_app',
'django.contrib.admin',
...
)
new_app
中的模板现在应该在contrib.admin
中的模板之前找到。
答案 1 :(得分:3)
您是否尝试在应用内使用模板文件夹?像这样:
my_project/
|-- new_app/
|-- templates/
|-- new_app/
|-- admin/
|-- change_list.html
|-- templates/
答案 2 :(得分:0)
转到第607页。
自定义模板选项 覆盖管理模板部分介绍了如何覆盖或扩展默认值 管理模板。使用以下选项覆盖
ModelAdmin
视图使用的默认模板:
在那里,您将获得如何使用ModelAdmin
覆盖特定模型的模板的选项。
同样(我没有比较,但似乎相似)的文档可以在django网站上找到:Custom template options