我是django的新手,所以我可能会以错误的方式解决这个问题(我很确定)。
尝试获取一个网页,在显示服务器列表状态的表格中显示postgresql数据库中的数据。
这是模板的一部分
<div class"row"=""><div class="span3" style="background-color:lightyellow; margin-left:20px">
<table class="table table-bordered table-condensed">
<thead>
<tr>
<th>Server</th>
<th>Status</th>
</tr>
</thead>
<tbody>
{{ res }}
</tbody>
</table>
</div></div>
在我看来,我有这个,
message = []
for res in data:
message.append(" <tr>")
message.append(" <td>" + str(res).split("'")[1] + "</td>")
if str(res).split("'")[3] == 'No':
message.append(" <td><FONT COLOR=\"008200\">Available</FONT> </td>")
else:
message.append(" <td><FONT COLOR=\"FF0000\">Down</FONT> </td>")
message.append(" </tr>")
return render_to_response('health.html', {'res':message}, context_instance=RequestContext(request))
如果我打印而不是附加,我得到了我期望的结果HTML。
目前,我没有在该表的网页上显示任何内容。
我不希望它必须呈现列表,但是如果格式不正确,我会认为表中应该出现一些内容。
这个HTML处理应该在模板而不是视图中完成吗?
答案 0 :(得分:0)
是的,通常最好在模板中进行所有HTML处理。这样,您可以将数据库访问逻辑与显示逻辑分开,从而减少耦合。这也意味着您可以轻松地重新使用模板。
因此,您应该使用视图函数来获取适当的对象,并将它们作为变量传递给模板。
尽管如此,你仍然走在正确的轨道上。为了使{{res}}变量正确显示,我认为您需要将模板更改为。
<tbody>
{% for message in res %}
{{ message }}
{% endfor %}
</tbody>
这应该迭代传递给模板的res
变量中的元素。