(最終更新月:2021年11月)
「HTMLページの表示方法は理解した!」
「HTMLファイルとPythonファイルの連携はなんとなくわかってきた!」
という初学者の方へ向けて、次のステップに進むための記事をご用意しました
当記事を通じて、データベースからデータを取得、ブラウザで表示する方法をお伝えします
- モデルクラス名.objects.all()
- モデルクラス名.objects.get()
という2つのメソッドについての解説となります
Djangoで言われるCRUDのうちのR(Reac→参照)についての記事となります
- objects.allで取得した複数の値は「リストビュー」として
- objects.getで取得した単一の値は「ディテールビュー」として
ブラウザに表示するまで解説していきます
当記事はアプリ開発~公開までをご紹介しているシリーズの一記事になります
最終的には、下記リンク先のような日報アプリを開発、公開できるように進めていきます
興味のある方は下記よりシリーズをまとめたページへお進みください

✔月9,800円でWebデザインが学べる
デザナルは、Webデザインに苦手意識がある方におすすめのサブスク型スクールです。
なぜなら安い以外にも以下のような特徴があるからです。
- 初期費用不要
- 教材が使い放題
- 案件で収入も得られる
デザナルは稼ぎながら学べる、格安のWebデザインスクールです。
>>デザナルの詳細はこちら<<
利用者の声など、詳しくはこちらでご覧ください↓
さいしょに
データベースにデータを複数追加しましょう(目安は4つ!)

複数用意できましたら先へ進みます
データを全て取得する「objects.all」
views.py内の関数で記述していきます
【nippoListView】
from django.shortcuts import render
from .models import NippoModel
def nippoListView(request):
template_name = "nippo/nippo-list.html"
ctx = {}
qs = NippoModel.objects.all()
ctx["object_list"] = qs
return render(request, template_name, ctx)
qs = NippoModel.objects.all()
でNippoModelクラスに保存されているデータを全て取得しています

モデルクラスのインポートも忘れずに!
取得したデータをコンテキストでHTMLテンプレートへ渡し、forループを使って表示していきます
【nippo-list.html】
{% extends "base.html" %}
{% block title %}日報アプリ一覧{% endblock %}
{% block content %}
<div>
<ul>
{% for obj in object_list %}
<li>{{ obj.title }}</li>
{% endfor %}
</ul>
</div>
{% endblock %}
forループは
{% for 要素 in リスト %} {% endfor %}
の中で記述していきます
【一覧ページ】ブラウザでアクセス

※urls.pyなどの設定方法は説明を割愛しています
特定のデータを取得する「objects.get」
objects.all()は保存されているすべてのデータを取り出します
対して、objects.get()は単一のデータを取り出すメソッドになります
【nippoDetailView】
def nippoDetailView(request, pk):
template_name = "nippo/nippo-detail.html"
ctx = {}
q = NippoModel.objects.get(pk=pk)
ctx["object"] = q
return render(request, template_name, ctx)
q = NippoModel.objects.get(pk=pk)
objects.get(pk=数値)
とすることでpkが数値と一致しているデータを取り出してくれます
上記のコード例では、URLから受け取ったint型「pk」と一致するpkを持つデータを取り出しています
下記のようにHTMLでは記述しています
{% extends "base.html" %}
{% block title %}pkでオブジェクトを表示します{% endblock %}
{% block content %}
<div>
{{ object }}
</div>
{% endblock %}
【詳細ページ】ブラウザでアクセス


urls.pyのurlpatternsでは、「pk」を受け取れるよう「<int:pk>」の記述が必要です
まとめ
以上で、データベースからデータを取得→HTMLで表示する方法を解説させていただきました
- すべてのデータを取り出すには、モデルクラス名.objects.all()
- 特定のデータを取り出すには、モデルクラス名.objects.get(フィールド名=値)
となります
また、複数のデータを取り出した場合はforループで展開していくことも頭に入れておきましょう
次回は、CRUDの「C」、データを登録・保存する方法について解説していきます
当ブログでは、日報アプリ開発を通じて、Webアプリを一から開発し公開するまでを初学者の方でもわかるようにと記事を連載しています
「Djangoでのアプリ開発を学びたい!」
「Djangoで開発したアプリをWebで公開するにはどうするの?」
という方は必見です!
