解决与第三方Django应用程序的模板块结构冲突

2024-04-19 03:09:50 发布

您现在位置:Python中文网/ 问答频道 /正文

当合并一个第三方django应用程序时,我通常希望它能与我的django项目的其余部分进行美学上的集成。而这通常是一个覆盖应用程序的问题基本.html'(如果那样的话),我们的模板结构都有点不同,因此不兼容经常出现。例如,假设一个应用程序定义了{% block footer %},并在其模板中将其用于各种事情。如果我已经将{% block footer %}用于导航栏或版权信息,我不希望应用程序的模板覆盖我的块。在

一个更简单、相关的情况是对同一事物使用不同的块名。例如,{% block extra-head %}与{}。在

解决这种情况的最好办法是什么?理想情况下,最好重新映射块,这样您就可以执行类似“将子块的{% block footer %}放入父块的{% block content-footer %}”之类的操作。有没有办法接近这个目标?或者只是简单地覆盖每个冲突模板的唯一解决方案?在


Tags: 项目django模板应用程序html版权情况block
1条回答
网友
1楼 · 发布于 2024-04-19 03:09:50

首先,html继承应该是:

my-sitebase.html
 |  app-base.html
   |  app-foo-template.html

我想这是你的意思,但措辞有点模棱两可。你可以编辑应用程序-基本.html. 在

其次,一个重写{%block footer%}的可重用应用程序几乎是故意给任何使用它的人带来麻烦你应该在提供者的问题跟踪器中标记它。在

如果应用程序对{%block footer%}执行任何操作,则应在应用程序中执行该操作-基本.html所以你只需要改变一次,当它与你的网站整合。在

最后,递归的find-replace实际上非常简单。如果您不使用允许这样做的IDE,Text-Crawler是免费的、闪电般的,是一个很好的非IDE解决方案。在

有几次尝试创建一个标准的继承模式,我把一个我喜欢的模板放在一起djangoslingshot.com网站我也见过其他人,但到目前为止还没有一个标准的融合。很可能是因为“寻找替换”实际上是一个非常低的成本,这样做的好处是能够准确地做你想做的事情,而不受其他人的规则的阻碍。在

相关问题 更多 >