python 在Django模板中传递一个包含在extends中的变量

bmp9r5qi  于 2023-01-01  发布在  Python
关注(0)|答案(1)|浏览(135)

我有以下结构的模板:
第一个月

<html>
<body>
  <p>
    This works: {% block title %}{% endblock %}
  </p>

  {% include 'heading.html' with title=title %} {# but this does not work since it is not a variable #}
</body>
</html>

heading.html

<p>
  {{ title }}
</p>

page.html

{% extends 'main.html' %}

{% block title %}test title{% endblock %}

我如何将标题从page.html传递到heading.html?理想情况下,它应该像现在这样被定义为一个块,但也欢迎其他选择。如果可能的话,我希望将解决方案包含在模板中。

s71maibg

s71maibg1#

一个可能的解决方案是将heading.html拆分为两个,然后在中间添加一个{% block %},但这是一个丑陋的变通方法,容易出现未闭合标记的bug。
我正在寻找更好的替代方案。
main.html

...
{% include 'heading1.html' %} {# containing <p> #}
{% block title %}{% endblock %}
{% include 'heading2.html' %} {# containing </p> #}
...

此外,如果白色很重要,那么includes和块之间就不能有新的一行。

相关问题