libro
www.tuyano.com
初心者のためのDjango入門

データベースアクセスを行う (2/5)

作成:2018-01-06 08:02
更新:2018-01-06 08:02

■QuerySetでモデルを取り出し表示する

では、indexアクションで利用するテンプレートを用意しましょう。「hello」フォルダの「templates」内にある「hello」フォルダから、index.htmlを開いて下のリスト欄のように編集して下さい。

ここでは、<table>タグを使って、取得したレコードをテーブルに整形し表示しています。モデルクラスの内容を出力している部分を見てみるとこうなているのがわかりますね。
{% for obj in data %}
    ……取り出したobjを操作する……
{% endfor %}

変数dataに、QuerySetインスタンスが設定されています。QuerySetはイテレータでもありますから、ここから順にモデルを取り出して処理していけばいいのです。
<tr>
    <td>{{ obj.name }}</td>
    <td>{{ obj.mail }}</td>
    <td>{{ obj.age }}</td>
    <td>{{ obj.pub_date }}</td>
</tr>

index.htmlでは、for構文の内部ではこんなことが実行されていました。forでオブジェクトを取り出した変数objから、namemailといったプロパティを取り出して表示していたのですね。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

{% load static %}

<html lang="ja">
<head>
    <meta charset="utf-8">
    <title>hello/index</title>
    <link rel="stylesheet" type="text/css" 
        href="{% static 'hello/style.css' %}" />
</head>
<body>
    <h1>hello/index</h1>
    <p>{{msg}}</p>
    <table width="90%">
    <tr><th>name</th><th>mail</th><th>age</th><th>publish date</th></tr>
    {% for obj in data %}
    <tr>
        <td>{{ obj.name }}</td>
        <td>{{ obj.mail }}</td>
        <td>{{ obj.age }}</td>
        <td>{{ obj.pub_date }}</td>
    </tr>
    {% endfor %}
    </table>
</body>
</html>

※関連コンテンツ

「初心者のためのDjango入門」に戻る