我有一个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的标准方法是什么?
答案 0 :(得分:8)
使用多个基本模板是我见过的一些团队使用的解决方案。例如,您可能只需添加名为“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")