gpt4 book ai didi

python - 解决模板 block 结构与第三方 django 应用程序的冲突

转载 作者:行者123 更新时间:2023-11-28 18:54:22 25 4
gpt4 key购买 nike

当合并第三方 django 应用程序时,我通常希望它与我的 django 项目的其余部分美观地集成在一起。虽然这通常是覆盖应用程序“base.html”(如果有)的问题,但我们的模板结构都略有不同,因此经常会出现不兼容问题。例如,假设一个应用程序定义了 {% block footer %} 并在整个模板中将其用于各种用途。如果我已经将 {% block footer %} 用于导航栏或版权信息,我不希望应用程序的模板覆盖我的 block 。

一个更简单的相关案例是对同一事物使用不同的 block 名称。例如,{% block extrahead %}{% block extrahead %}

解决这类情况的最佳方法是什么?理想情况下,重新映射 block 会很好,因此您可以执行诸如“将 child 的 {% block footer %} 放入父级的 {% block content-footer %} 之类的事情>”。有什么办法可以接近它吗?或者是简单地覆盖每个冲突模板的唯一解决方案?

最佳答案

首先,html继承应该是:

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

我想这就是你的意思,但措辞有点含糊。您也许可以只编辑 app-base.html。

其次,覆盖 {% block footer %} 之类内容的可重用应用程序几乎是故意给任何使用它的人造成麻烦——您应该在提供商的问题跟踪器中标记它。

如果该应用对 {% block footer %} 做了任何应该在 app-base.html 区域中完成的事情,那么在将它与您的网站集成时您只需更改一次。

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

已经进行了几次创建标准继承模式的尝试,我在 djangoslingshot.com 上将我喜欢的模板放在一起,我也看到了另一个——但到目前为止还没有任何合并围绕一个标准。可能是因为查找替换实际上是一个非常低的成本,它的好处是能够完全按照您的意愿行事,而不会受到其他人的规则的阻碍。

关于python - 解决模板 block 结构与第三方 django 应用程序的冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5940755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com