这是我的django模板文件:
{% if chart %}
{% block chart_content %}
// some for loop
{% endblock %}
{% else %}
{% block content %}
{% endblock %}
{% endif %}
这是我的“base.html”:
<div class = "container">
{% block content %}
{% endblock %}
</div>
{% block chart_content %}
{% endblock %}
呈现上述模板时,页面中会显示“if”和“else”内容。换句话说,评估“if”和“else”。有谁能告诉我这是什么问题?
答案 0 :(得分:3)
来自Django template if statement always evaluates to true:
您无法将控制流标记包裹起来,就像在块周围一样。您的问题是,子模板的块数据定义仅仅因为它存在而被使用。
您可以通过将if标记放在块数据中来修复它。如果要在列表为空时继承父项的内容,请添加扩展为{{block.super}}的else案例。
答案 1 :(得分:0)
在“base.htm”模板中,您确定并使用了块,默认情况下您会看到这些块内容,而在继承的模板上,您只能覆盖在父模板中确定的块的内容,您无法设置出现或消失的块,你可以通过重新确定没有内容的块来消除继承的块:
{# base.html #}
{% block x %}The X Block{% endblock %}
并继承:
{# index.html #}
{% extends "base.html" %}
{% block x %}{% endblock %}
答案 2 :(得分:0)
其他答案对模板规则是正确的。但是,如果你只是想修复你的结果,也许这样的事情可以解决问题。
select `key`,
group_concat(
case when `value` is not null
then `language`
else null end) languages,
concat(
(sum(`value` is not null )/ count(distinct `language`) ) * 100,
'%') translated
from table1
group by `key`