django模板有条件的html

时间:2014-04-26 18:10:42

标签: python django django-templates

我不确定标题在技术上是否正确(对不起,我是python + django的新手)

我有一个模板页面,显示应用程序是运行还是停止取决于其状态。例如:

如果app正在运行,我想显示:

<div class="lt">
    <a class="play" title="App running">
        <span class="text_play">Running</span>
    </a>
</div>
<div class="rt">
    <input type="submit" onclick="stop_app()" value="stop" class="stop">
</div>

如果应用程序未运行,请改为显示:

<div class="lt">
    <input type="submit" onclick="star_app()" value="start" class="play">
</div>
<div class="rt">
    <a class="stop" title="Application is not running">
        <span class="test_stop">Not Running</span>
    </a>
</div>

这是一种简化的简化html,但我的观点是我怎样才能避免重复自己?

模板传递一个应用程序字典,它迭代它以显示所有应用程序及其状态(运行/停止)。所以目前我已经两次迭代dict,一个用于&#34;停止&#34;应用程序和一个用于&#34;运行&#34;应用。

希望它清楚

提前致谢

编辑:这是我到目前为止所尝试的:

{% if application.service.status|lower == "enabled" %} 
<div>...display running HTML...</div>
{% else %}
<div>...display the non-runing HTML..</div>
{% endif %}

我只是想知道我做的是否正确(DRY?)

1 个答案:

答案 0 :(得分:4)

你提出的建议非常糟糕。

{% if application.service.status|lower == "enabled" %} 
<div>...display running HTML...</div>
{% else %}
<div>...display the non-runing HTML..</div>
{% endif %

请记住,你将依赖于返回渲染(请求...用于确定HTML Django需要构造。

您建议的解决方案将选择其中一个。即如果您的非运行HTML需要切换到运行HTML,则无法在没有其他渲染的情况下访问它。

为了更清晰简洁,django模板将构建适当的HTML,而忽略了替代选项或“条件”。

如果你学习了一些jQuery,你可以让页面的元素切换当前显示的html。将此扩展为ajax将允许您从服务器获取状态更新,反之亦然。