データベースアクセスを行う (1/5)
作成:2018-01-06 08:00
更新:2018-01-06 08:11
更新:2018-01-06 08:11
■全レコードを取り出し表示する
では、前回、データベースに用意したPersonsテーブルを操作してみることにしましょう。まずは、テーブルにある全レコードを取り出して表示させてみます。
先に作成した、「hello」アプリケーションをそのまま利用することにしましょう。「hello」フォルダ内のviews.pyを開き、下のリスト欄のようにindex関数を定義して下さい。これが今回、作成するindexアクションの処理になります。
ここでは、以下のようにしてPersonsの全レコードを取り出しています。
ここでは、「all」というメソッドを呼び出していますね。これは、すべてのレコードを取得するメソッドです。取り出されるレコードは、1つ1つがモデルクラス(ここでは、Person)のインスタンスの形になっています。
allで得られるのは、QuerySetというクラスのインスタンスです。これは、イテレータ(値を順番に取り出していくオブジェクト)としての機能を備えており、繰り返し構文などでモデルを順に取り出し処理していくことができます。
この、取り出されたQuerySetは、contextに 'data': data, というように追加されます。後はテンプレート側で、渡されたQuerySetから順にモデルインスタンスを取り出し表示していくだけです。
先に作成した、「hello」アプリケーションをそのまま利用することにしましょう。「hello」フォルダ内のviews.pyを開き、下のリスト欄のようにindex関数を定義して下さい。これが今回、作成するindexアクションの処理になります。
ここでは、以下のようにしてPersonsの全レコードを取り出しています。
data = Person.objects.all()Personは、モデルでしたね。モデルクラスには、objectsというプロパティが用意されています。これは、「Manager」と呼ばれるクラスのインスタンスが設定されているものです。このManagerクラスは、データベースへのアクセスに関する各種の機能を提供します。わかりやすくいえば、「モデルクラスのobjectsというプロパティにあるメソッドを呼び出せば、データベースにアクセスできる」ということです。
ここでは、「all」というメソッドを呼び出していますね。これは、すべてのレコードを取得するメソッドです。取り出されるレコードは、1つ1つがモデルクラス(ここでは、Person)のインスタンスの形になっています。
allで得られるのは、QuerySetというクラスのインスタンスです。これは、イテレータ(値を順番に取り出していくオブジェクト)としての機能を備えており、繰り返し構文などでモデルを順に取り出し処理していくことができます。
この、取り出されたQuerySetは、contextに 'data': data, というように追加されます。後はテンプレート側で、渡されたQuerySetから順にモデルインスタンスを取り出し表示していくだけです。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
from django.shortcuts import render from django.http import HttpResponse from .models import Person def index(request): data = Person.objects.all() context = { 'msg': 'Personのリスト', 'data': data, } return render(request, 'hello/index.html', context)
※関連コンテンツ