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

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

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

■index.htmlを修正する

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

修正ができたら、/helloにアクセスしてみましょう。nameの入力フィールドがあり、その下に全レコードが表示されています。nameフィールドに名前を記入して送信すれば、その名前のレコードだけが検索され表示されます。

ここでは、以下のようなフォームを用意してあります。
<form action="/hello/" method="post">

これで、/helloにそのままPOST送信されるようになります。index関数でその処理が用意されていましたね。フォームに用意されているのは以下のようなフィールド1つだけです。
<input id="name" type="text" name="name" value="{{current_name}}">

nameという名前にしてあります。これが送信され、index関数で request.POST['name'] として取り出されていたのですね。また、送信した値はそのままindex側からcurrent_nameという値として渡されており、それが value="{{current_name}}" としてvalueに設定され表示されるようにしてあります。

とりあえず、これでごく初歩的な検索はできるようになりました!

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

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>
    <form action="/hello/" method="post">
        {% csrf_token %}
        <label for="name">name: </label>
        <input id="name" type="text" name="name" 
            value="{{current_name}}">
        <input type="submit" value="OK">
    </form>
    <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 2.0入門」に戻る