0

我是 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 处理应该在模板而不是视图中完成吗?

4

1 回答 1

0

是的,通常最好在模板中进行所有 HTML 处理。这样,您可以将数据库访问逻辑与显示逻辑分开,从而减少耦合。这也意味着您可以轻松地重复使用模板。

所以你应该使用视图函数来获取适当的对象并将它们作为变量传递给模板。

尽管如此,你还是走在了正确的轨道上。为了让您的 {{res}} 变量正确显示,我认为您需要将模板更改为。

<tbody>
    {% for message in res %}
    {{ message }}
    {% endfor %}
</tbody>

这应该遍历res您传递给模板的变量中的元素。

于 2013-02-22T03:39:02.500 回答