動くコード図鑑技術記事現場の渡り方キャリア論すべての記事About
技術記事

DjangoでModelからTemplatesにデータを渡す方法と考え方

バイブス父さん
現役の業務SE
2019年10月21日2 min read

みなさんこんにちは!ひろぽんです!

今回はPythonのWebフレームワークDjangoで、ModelからTemplatesにデータを渡すミニマムの方法について書いていこうと思います!

前提としてアプリの追加、ルーティングの設定はしているものとします!

この記事ではModelの定義⇒viewの定義⇒templatesへの反映までを書いていきたいと思います!

Modelの定義

まずはDjangoで使うModelの定義をします!

今回書いていくのはTemplatesにデータを送る例なので比較的簡単なModelにしておきます!

ではModelを定義

Modelの定義 (sql)#45b66af486e9
from django.db import models
 
class Student(models.Model):
    name = models.CharField(max_length=20)
    age = models.IntegerField()
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です

とりあえず生徒の一覧を簡単に。めちゃくちゃ簡単に管理するModelを定義しました!

名前と年齢だけという、一体何に使うんだというModelです!

でもミニマムでの説明なので、一旦はこれでいいでしょう!

View.pyの編集

では次に上記のModelを使うview.pyを書いていきましょう

templates⇒student⇒index.htmlがあると想定して書くと以下のようになります。

View.pyの編集 (sql)#4dd482ebbc53
from django.shortcuts import render
 
// ここでモデルのインポートをする。
from .model import student
 
 
def index(request):
 
// Studentsモデルのデータを全件取得する。
// Templatesではstudentsで使える。
studentModel = {'students': Students.objects.all()}
 
    return render(request,'student.index.html',studentModel)
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です

とりあえずここまででModelとViewでデータを渡す準備はできました!

あとはTemplatesでデータを受け取るだけです!

Templatesでデータを受ける

templatesはhtmlファイルなのでみなさんお馴染みの書き方ですね!

<HTML>
<BODY>
{{ Students }}
</BODY>
</HTML>

これで一応データは出力されます。
データを順に取り出し表示したい場合は以下のように書くといいでしょう。

<HTML>
<BODY>
<ul>
{% for student In Students %}
    <li>名前:{{student.name}}年齢:{{student.age}}</li>
{% endfor %}
</ul>
</BODY>
</HTML>

これできれいなリストで表示ができるはずです!

まとめ

今回すごく簡単にミニマムでDjangoのModelからTemplatesにデータを渡す方法を書いてきました!

今現在私がDjangoを学んでいるということもあり、備忘録的な感じで書きましたが、いかがでしょうか!

単一テーブルをTemplatesに表示するだけなら、割と簡単にできると思いますが、これに複数テーブルのリレーションとかいろいろ合わさってくるとなかなか難しくなってくるのかもしれません!

頑張っていきましょう!

この記事のコードと手順は ぜんぶ動作検証済み。 安心して現場で試してくれ。
バイブス父さん

現役の業務SE。C# / SQL Server 保守の現場から、コードも人もキャリアも全部書く。 実体験ベース。

運営者について