この記事の最終更新日: 2023年2月2日
レコードの取得と表示
前回は、管理者ツールからレコードの追加を行いました。
今回はレコードを全件取得し、表示するまでを解説していきます。
確認のために、あらかじめ適当なレコードを3件ほど入れておきましょう。
レコードの追加方法を忘れてしまった方は、以下の記事を参考にしてください。
それでは、views.pyとurls.pyを以下のように編集してみましょう。
views.py
from django.shortcuts import render
from django.http import HttpResponse
from .models import Customer
def index(request):
data = Customer.objects.all()
params = {
'title':'DB_Practice',
'message':'all data:',
'data': data
}
return render(request, 'hello/index.html',params)
urls.py
from django.urls import path
from .views import index
urlpatterns = [
path('', index, name='index'),
]
レコードを全件取得する、allメソッド
allメソッドを使うだけで、全レコードの取得は完了してしまいます。非常に簡単です。
続いて、取得したレコードを表示してみましょう。
表示にはindex.htmlを編集する必要があります。
index.html
{% load static %}
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>{{title}}</title>
</head>
<body>
<h1>{{title}}</h1>
<table>
<tr>
<th>ID</th>
<th>NAME</th>
<th>PREMIUM</th>
<th>MAIL</th>
<th>GENDER</th>
<th>AGE</th>
<th>BIRTHDAY</th>
</tr>
{%for item in data%}
<tr>
<td>{{item.id}}</td>
<td>{{item.name}}</td>
<td>{% if item.flg_premium == False %}FALSE{% endif %}
{% if item.flg_premium == True %}TRUE{% endif %}
</td>
<td>{{item.mail_address}}</td>
<td>{% if item.gender == 1 %}male{% endif %}
{% if item.gender == 2 %}female{% endif %}
{% if item.gender == 3 %}others{% endif %}
</td>
<td>{{item.age}}</td>
<td>{{item.birthday}}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
保存したら、以下のURLをブラウザに入力して画面を更新してみましょう。
すると、以下のような画面が表示されるはずです。
IDからレコードを検索する方法
次はレコード検索の基本について解説します。
最初に、サンプルコードからどのように実行するかを確認していきます。
IDで検索できるように、ID入力フォームを設置してみましょう。
編集するのはforms.py、index.html、views.pyの三つのファイルです。
forms.py
from django import forms
class InputForm(forms.Form):
id = forms.IntegerField(label='ID')
index.html
{% load static %}
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>{{title}}</title>
</head>
<body>
<h1>{{title}}</h1>
<table>
<form action="{% url 'index' %}" method="post">
{% csrf_token %}
{{form.as_table}}
<tr><td></td><td><input type="submit" value="click"></td></tr>
</form>
</table>
<table>
<tr>
<th>ID</th>
<th>NAME</th>
<th>PREMIUM</th>
<th>MAIL</th>
<th>GENDER</th>
<th>AGE</th>
<th>BIRTHDAY</th>
</tr>
{%for item in data%}
<tr>
<td>{{item.id}}</td>
<td>{{item.name}}</td>
<td>{% if item.flg_premium == False %}FALSE{% endif %}
{% if item.flg_premium == True %}TRUE{% endif %}
</td>
<td>{{item.mail_address}}</td>
<td>{% if item.gender == 1 %}male{% endif %}
{% if item.gender == 2 %}female{% endif %}
{% if item.gender == 3 %}others{% endif %}
</td>
<td>{{item.age}}</td>
<td>{{item.birthday}}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
views.py
from django.shortcuts import render
from django.http import HttpResponse
from .models import Customer
from .forms import InputForm
def index(request):
data = Customer.objects.all()
params = {
'title':'DB_Practice',
'message':'all data:',
'form':InputForm(),
'data': [],
}
if (request.method == 'POST'):
num=request.POST['id']
item = Customer.objects.get(id=num)
params['data'] = [item]
params['form'] = InputForm(request.POST)
else:
params['data'] = Customer.objects.all
return render(request, 'hello/index.html',params)
入力が完了すると、IDの入力フォームが表示され、以下のような画面になります。
確認できたら、IDを入力して「click」ボタンをクリックしてみましょう。
対象のレコードのみ表示されるはずです。
(存在しないIDを入力してしまうとエラーになるので注意してください。)
対象IDのレコードのみ表示される
IDを指定して取り出す、getメソッド
IDを指定して取り出すには、以下の2行のコードを覚えればOKです。
以上、レコードの検索の基本の解説でした。
次回に続きます。
大阪のエンジニアが書いているブログ。
コメント