我有一个django模板,可以从很多视图中使用.该模板有一个消息块,用于通知用户应该引起他们注意的任何事情.是否发送消息取决于视图.某些视图可能会向message模板发送变量,而其他视图可能不会.
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))
Run Code Online (Sandbox Code Playgroud)
在模板中,我检查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 …Run Code Online (Sandbox Code Playgroud) 我一直试图在django模板中调用if条件中的块.
我有一个base template.我有许多其他模板可以扩展基本模板.我在基本模板中定义了一个块:
{% block test_block %}Test{% endblock %}
Run Code Online (Sandbox Code Playgroud)
然后我想在其他模板中的某个条件上覆盖此块.如果条件失败,则不应覆盖该块.这是我写的东西:
{% if test_value %}{% block test_block %}Development{% endblock %}{% endif %}
Run Code Online (Sandbox Code Playgroud)
这实际上(或可能是虚拟的)忽略了if条件.
我最后做了什么:
{% block test_block %}{% if test_value %}Development{% else %}{{ block.super }}{% endif %}{% endblock %}
Run Code Online (Sandbox Code Playgroud)
我不得不在任何地方做这样的事情.
这是最好的方法吗?这是唯一的方法吗?为什么我不能尝试我的第一种方式?或者我身边有什么错误吗?