我有一个Django模板,用于许多视图。该模板具有用于通知用户应注意的任何内容的消息块。是否发送消息取决于视图。一些视图可能会向模板发送 message 变量,而其他视图可能不会。
<code>view_1:
message = "This is an important message"
render_to_response("my_template.html",
{'message':message, 'foo':foo, 'bar':bar},
context_instance = RequestContext(request))
view_2:
message = "This is an important message"
render_to_response("my_template.html",
{'foo':foo, 'bar':bar},
context_instance = RequestContext(request))
</code>
在模板中,我检查message
变量并按以下方式包含块:base_template.html:
....
{% block main_body %}
{% block messages %}
{% endblock %}
{% block content %}
{% endblock %}
{% endblock %}
....
my_template.html:
{% extends base_template.html %}
....
{% if message %}
{% block messages %}
<div class='imp_msg'>{{ message }} </div>
{% endblock %}
{% endif %}
...
问题是,即使view_2没有传递消息,最终的HTML也会呈现为<div class='imp_msg'></div>
,基本上是一个空的
元素。
由于该CSS的设计是为消息提供浅红色背景,因此我在页面顶部看到了一个空的浅红色条。
我还尝试过:{% ifnotequal message None %}
、{% ifnotequal message '' %}
,尝试将message
显式设置为None
或''
,但似乎没有帮助。
希望能得到一些帮助!
{% block messages %}
,django模板渲染引擎会将其寻找并注入到扩展它的任何地方,并忽略它周围的任何if
或其他内容。话虽如此,我不能向您发誓,在{% block %}
周围使用{% if %}
是否有效-我从未尝试过,所以我也不知道。可能永远不起作用,这就是主要问题,不是您在基础中有{% block messages %}
。 - Colleen{% if messages != None %}
。 - destresa