我已经尝试了一段时间来覆盖在wagtail中的单个basesitesset的edit.html模板。我不确定这是否可能。通过使用以下目录结构,我对ModelAdmin模板的覆盖工作得很好:ModelAdmin index.html override
对于我的设置也是一样的吗?它位于我的success_stories应用模型中。
我已经看过了wagtail/contrib/settings/templates/wagtailsettings/edit.html
文件,但我不清楚如何做到这一点。我一直使用无头wagtail,没有很多使用模板的经验。
wagtail文档似乎只提到了ModelAdmin覆盖。
这将通过标准的Django模板覆盖来完成:第一个匹配的模板将赢得蛋糕。
在您的情况下,Wagtail设置贡献模块的模板位于templates/wagtailsettings/edit.html
下,这意味着在您的应用程序的template
目录中,您必须进行完全相同的设置:
<you_app_directory>/templates/wagtailsettings/edit.html
然后取决于你如何设置你的模板发现和/或设置你的应用程序加载顺序,上面的一个模板将首先匹配。为了让你的模板成为第一个匹配的,你可以做两件事:
更改应用程序的加载顺序,确保应用程序在之前出现INSTALLED_APPS
Django设置列表中的wagtail.contrib.settings
:
INSTALLED_APPS = [
...
<your_app>,
wagtail.contrib.settings
...
]
或者你可以通过修改TEMPLATES
设置来改变Django发现模板的方式:
TEMPLATES = [
{
...
'DIRS': [BASE_DIR / 'templates'],
"APP_DIRS": True,
...
},
]
注意DIRS
在APP_DIRS
之前,这里的顺序也很重要。首先,Django会查找你在DIRS
中指定的目录,如果没有匹配,它会继续查找已安装的应用程序目录。
注意,使用后一种方法,BASE_DIR / 'templates'
是项目根目录下的单个模板目录。
通常,如果重写第三方模板,则使用第一种方法。