0

私はdjangoを初めて使用するので、これについて間違った方法で行っている可能性があります(確かにそうです)。

サーバーのリストのステータスを示すテーブルに postgresql DB からのデータを表示する Web ページを取得しようとしています。

これはテンプレートの一部です

<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 が得られます。

現在のところ、そのテーブルの Web ページには何も表示されません。

必ずしもリストをレンダリングするとは思いませんが、間違った形式であっても、テーブルに何かが表示されるはずだと思っていたでしょう。

この HTML 処理は、ビューではなくテンプレートで実行する必要がありますか?

4

1 に答える 1

0

はい、通常はすべての HTML 処理をテンプレートで行うのが最善です。このようにして、データベース アクセス ロジックを表示ロジックから分離し、結合を減らすことができます。また、テンプレートを簡単に再利用できることも意味します。

そのため、view 関数を使用して適切なオブジェクトを取得し、それらを変数としてテンプレートに渡す必要があります。

それでも、あなたは正しい軌道に乗っています。{{res}} 変数を適切に表示するには、テンプレートを変更する必要があると思います。

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

resこれは、テンプレートに渡した変数の要素を反復処理する必要があります。

于 2013-02-22T03:39:02.500 に答える