覆盖wagtail basesitessetting模板



我已经尝试了一段时间来覆盖在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_APPSDjango设置列表中的wagtail.contrib.settings:

INSTALLED_APPS = [
...
<your_app>,
wagtail.contrib.settings
...
]

或者你可以通过修改TEMPLATES设置来改变Django发现模板的方式:

TEMPLATES = [
{
...
'DIRS': [BASE_DIR / 'templates'],
"APP_DIRS": True,
...
},
]

注意DIRSAPP_DIRS之前,这里的顺序也很重要。首先,Django会查找你在DIRS中指定的目录,如果没有匹配,它会继续查找已安装的应用程序目录。

注意,使用后一种方法,BASE_DIR / 'templates'是项目根目录下的单个模板目录。

通常,如果重写第三方模板,则使用第一种方法。

相关内容

  • 没有找到相关文章

最新更新