在 Django 中将一个块放入另一个块中

Posted

技术标签:

【中文标题】在 Django 中将一个块放入另一个块中【英文标题】:Putting a block inside another in Django 【发布时间】:2011-01-27 02:02:15 【问题描述】:

我有一个 Django 模板,我想在多个地方进行扩展。在某些情况下,div 必须在表单内,而在其他情况下则不能。为此,我在 div 的上方和下方放置了一个块,以便我可以分别添加 和 。

期望:

<form>
<div class="my_div">
  % block div_content %
    ...
  % endblock %
</div>
</form>

模板:

% block div_top %% endblock %
<div class="my_div">
  % block div_content %
  % endblock %
</div>
% block div_bottom %% endblock %

看到这里,我不禁想到有更好的方法来做到这一点。执行此操作的标准 Django 方式是什么?

【问题讨论】:

【参考方案1】:

使用多个基本模板是我见过一些团队使用的解决方案。例如,您可能只需添加一个名为“base_with_form.html”的附加基本模板。需要表单的模板扩展了这个基本模板。

对我有帮助的一件事是考虑以类似于 Python 包的方式布置模板目录。我通常在每个目录中包含一个 base.html (ala init.py),即使它只是一个占位符。每个基本文件都在其父目录中扩展一个基本文件。通过添加具有所需更改的本地 base.html 副本来完成同一目录中多个模板的样式的其他特殊化。

例如:

templates/
  base.html
  index.html (extends "base.html")
  accounts/
    base.html (extends "base.html")
    affiliate_base.html (extends "base.html")
    my_account.html (extends "accounts/base.html")
    affiliate_dashboard.html (extends "accounts/affiliate_base.html")
    vips/
      base.html (extend "accounts/base.html")
      vip_lounge.html (extends "accounts/vips/base.html")

【讨论】:

以上是关于在 Django 中将一个块放入另一个块中的主要内容,如果未能解决你的问题,请参考以下文章

Django无法读取块中的脚本

Django-Template:在标签块中获取变量!

是否可以使用 django 的自定义模板标签在模板的其他块中插入代码?

使用 !ERRORLEVEL!在通过管道传输到另一个进程的代码块中

如何在 django 中将 api 放入 celery 任务中?

如何将 ext.* 变量放入 build.gradle.kts 中的插件块中