覆盖 Django Material Admin 模板并将其保存在项目文件夹中

Posted

技术标签:

【中文标题】覆盖 Django Material Admin 模板并将其保存在项目文件夹中【英文标题】:Overwrite a Django Material Admin template and keep it inside Project Folder 【发布时间】:2021-10-22 00:51:17 【问题描述】:

我正在使用 Django Material Admin 框架。我想覆盖一个模板(例如:clearable_file_input.html)并将覆盖的模板放在项目文件夹中,以便在运行项目时获取模板的更新功能。 我需要将更新后的模板放在项目中的什么位置? 为了自动获取更新的模板而不是原始模板,我需要做哪些更改(如果有类似更新 settings.py 文件)?

示例场景:我想更新单击(TabularInline 模型的)链接时打开链接的功能。单击该链接时,我想在另一个选项卡中打开该链接。所以,我知道我需要更新 clearable_file_input.html 并且我成功地更新了它。现在我需要弄清楚我需要将此文件放在我的项目中的哪个位置以获取更新的功能。 我不想更新路径中存在的原始模板:“./local/lib/python3.7/site-packages/material/admin/templates/admin/widgets/clearable_file_input.html” 我想将更新后的模板放在项目中,以便在运行项目时采用更新后的模板,而不是先前指定路径中存在的原始模板。

我需要做什么才能使此功能正常工作?

【问题讨论】:

【参考方案1】:

您需要按照here 的回答覆盖模板,但在我的情况下,我必须另外执行三个步骤,即使用 TemplateSettings 渲染器而不是默认渲染器。

Step1:你需要在你的 django 的 settings.py 中添加下面这行

FORM_RENDERER = 'django.forms.renderers.TemplatesSetting'

第 2 步:将以下内容添加到 TEMPLATES 配置中的 DIRS 列表中

django.__path__[0] + '/forms/templates'

Step3:在您安装的应用中添加'django.forms'

这样就可以了!

【讨论】:

以上是关于覆盖 Django Material Admin 模板并将其保存在项目文件夹中的主要内容,如果未能解决你的问题,请参考以下文章

覆盖 Django admin 中的注销链接

在 django admin 中覆盖模板

覆盖 django admin List_Filter 模板

html Django Admin:使用AJAX保存 - 覆盖`admin / change_form.html`模板

覆盖 Django admin 中的默认查询集

Django Admin 覆盖显示的字段值