Django:覆盖和扩展应用程序模板

标签 django django-templates

如果您想覆盖 django 中应用程序附带的模板(在 app/templates/app/中),您可以在另一个目录中创建一个同名模板,模板加载器会在应用程序的模板目录之前检查该模板。如果您只想覆盖模板的某些 block ,您还必须复制整个模板并更改该 block ,这实际上不是很 DRY。

有没有人知道一种方法来覆盖原始模板,同时扩展它,以便您只需要覆盖您想要更改的特定 block ? (事情是在不更改模板名称的情况下执行此操作,因为在某些情况下,您可能必须更改 View 以使其与另一个模板一起使用)

编辑:正如 Adam Taylor 在 Django 1.9 on 的评论中指出的那样这是可能的,没有任何黑客攻击。

最佳答案

我想答案来自this related question是相关的;目前,最好的解决方案似乎是使用来自 django-apptemplates package on PyPI 的自定义模板加载器。 , 所以你可以只使用 pip安装它(例如 pip install django-apptemplates)。

模板加载器允许您在特定应用程序中扩展模板;例如,要扩展管理界面的索引页,您可以添加

'apptemplates.Loader',

settings.py 中的 TEMPLATE_LOADERS 列表,并使用

{% extends "admin:admin/index.html" %}

在您的模板中。

关于Django:覆盖和扩展应用程序模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3967801/

相关文章:

django - 在 Django 中包含 css

django - 尝试访问 Django 模板中的 ModelForm 字段 modelChoice 选择

python - 同时向两个数据库插入数据

python - 将项目添加到 Django 中的元组元组后是否可以重新启动服务器?

css - block 内容中的文本溢出

python - Python Django ValueError的int()无效文字,基数为10:“telba.de_001”

python - 如何在 wagtail cms 字段中包含上下文变量?

django - Tastypie 清理输入吗?

python - 如何通过 Bash 脚本将模型查询传输到 Django Shell?

python -/invoice/Flowable <PmlTable@0x1D09C899130 7 rows x 5 cols(tallest row 841)> with cell(0,0) 的布局错误