django模板:{%with%}变量在{%with%}内的{%block%}内空白

时间:2015-07-13 18:12:19

标签: django django-templates

编辑:我已经将测试用例重写为绝对最小化: file' test.html':

{% extends "testbase.html" %}
{% with greeting="Hi" %}
  {% block content %} {{ greeting }} {% endblock %}
{% endwith %}

file' testbase.html':

<html>
  <body>
    {% block content %} {% endblock %}
  </body>
</html>

在呈现test.html时,会生成以下HTML输出:

<html>
  <body>

  </body>
</html>

withblock content的嵌套被颠倒以便with在里面时,&#34;嗨&#34;被渲染。我的模板有问题吗?什么样的问题可能导致这种情况?怎么可以诊断这个?我在python Python 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)] on win32

上运行Django 1.6.1

1 个答案:

答案 0 :(得分:0)

看起来它不应该像那样工作,从django-users问题完全像我的(下图)。基本上,似乎在父模板的上下文中评估子模板块内容。如果我将with语句放在父模板中,并将{{greeting}}放在子块内容中,那么&#34;嗨&#34;出现。

  

我不认为你所描述的内容与{%有关   带有%}标签。您在这里处理子模板    - 以{%extends%}标记开头的标记。子模板中{%block%}标记之外的任何内容都不会对渲染产生任何影响   模板。子模板只提供块内容以覆盖   什么在父模板中指定,所以一切都在   子模板必须包含在{%block%}标记内。 (如果不是   在{%block%}内指定,它应该放在父级中   模板?)见:

     

http://docs.djangoproject.com/en/dev/topics/templates/#id1