Django模板有条件的HTML

Mar*_*ian 5 python django django-templates

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

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

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

<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>
Run Code Online (Sandbox Code Playgroud)

如果应用程序未在运行,则显示以下内容:

<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>
Run Code Online (Sandbox Code Playgroud)

这是一种简化的简化html,但我的观点是如何避免重复自己?

向模板传递了一个应用程序字典,该字典将进行迭代以显示所有应用程序及其状态(正在运行/已停止)。因此,目前我要遍历dict两次,一次是针对“已停止”应用程序,另一次是针对“运行中”应用程序。

希望很清楚

提前致谢

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

{% if application.service.status|lower == "enabled" %} 
<div>...display running HTML...</div>
{% else %}
<div>...display the non-runing HTML..</div>
{% endif %}
Run Code Online (Sandbox Code Playgroud)

我只想知道我是否在做正确的事(干吗?)

vis*_*isc 5

你建议的是干的。

{% if application.service.status|lower == "enabled" %} 
<div>...display running HTML...</div>
{% else %}
<div>...display the non-runing HTML..</div>
{% endif %
Run Code Online (Sandbox Code Playgroud)

请记住,您将依靠return render(request ...确定HTML Django需要构造。

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

为了更加清楚和简洁,Django模板将构建适当的HTML,而忽略其他选项或“条件”。

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