こんにちは。
LiSMOtechの久津間です。
前回の記事では「Djangoのビューとテンプレートを使った画面表示!HTMLを生成し画面へレンダリングしてみよう!」ビューとテンプレートを使用して画面レンダリングを行いました。
今回の記事ではデータを保存したり更新したり取得できるようにするため、モデルを作成していきたいと思います。
モデルを利用することでユーザーの情報や会社情報、投稿された内容をデータベースへ保管することができるようになります。
本格的なWEBアプリケーションを開発するには必須の知識になりますので、しっかりと覚えていきましょう。
それでは本題に入ります。
今回のセクションではDjangoのモデル(models.py)を利用し、データベースに保管されている値をユーザーの画面へ表示させていきたいと思います。
【環境情報】
– OS MAC
– Python ver 3.9.5
– Django ver 3.2.9
モデルとは、WEBアプリケーションとデータベースを連携させる仕組みを示します。
モデルを理解することで、データベースを簡単に操作することが可能です。
操作とは検索、取得、追加、更新、削除といった操作のことを示します。
WEBアプリケーションではユーザーの情報や投稿した記事情報などのデータをデータベースに保存を行います。
例えば、記事のタイトル、本文、日付、執筆者などの情報です。
Djangoではこれらデータベースに保管する要素を整理し、モデルファイルへ記述を行なっていきます。
それではモデルファイルを作成していきます。
作成したアプリフォルダ配下の「models.py」ファイルを開きます。
今回のモデルでは”お問い合わせ”を想定としたモデルファイルを作成します。
from django.db import models
# Create your models here.
class Contact(models.Model):
title = models.CharField(max_length=60, blank=False)
name = models.CharField(max_length=12, blank=False)
email = models.EmailField(max_length = 254, blank=False)
content = models.TextField(blank=False)
created_at = models.DateTimeField(auto_now_add=True, blank=True)
def __str__(self):
return self.title
class Meta():
verbose_name_plural = 'お問い合わせ'
※モデルフィールドはこちらを参考にしてください。(https://docs.djangoproject.com/en/3.2/ref/models/fields/)
ここでは、タイトル・名前・メールアドレス・内容・作成日時のカラムを追加する記載を行いました。
def __str__(self)は管理画面に表示されるモデルデータを判別するために定義しています。
タイトルフィールドが表示されるようになり、どのような情報なのか判別が簡単になるはずです。
また、class Meta()でテーブル定義のメタ情報を変更しています。
管理画面での表示がお問い合わせとなります。
次にアプリディレクトリ配下の「admin.py」ファイルを開き、以下のとおり編集します。
from django.contrib import admin
from .models import Contact
# Register your models here.
admin.site.register(Contact)
それでは、ターミナルから以下のコマンドを実行し、マイグレーションファイルを作成します。
$ python manage.py makemigrations
データベースに適用させます。
$ python manage.py migrate
正常に実行ができると以下のような結果が表示されると思います。
今回は管理画面からデータを登録していきます。
以下のコマンドを実行し、サーバーを起動します。
$ python manage.py runserver
ターミナルに表示されるURLへアクセスしたのち、管理画面のURLへアクセスします。
例)http://127.0.0.1:8000/admin
管理画面が表示されたら、以前に作成したスーパーユーザーの情報を入力してください。
(作成がまだの方はこちらの記事を参照)
任意のお問い合わせ内容を追加していきます。
お問い合わせの内容をデータベース(Contact)に登録することができました。
今回は管理画面から登録を行いましたが、ユーザーが利用するフロント画面からデータをpostして更新することも可能です。
views.pyファイルを編集し、トップ画面に投稿した内容を受け渡します。
from django import template
from django.shortcuts import render
from django.http import HttpResponse
from django.template import context, loader
from .models import Contact
# Create your views here.
def home(request):
template = loader.get_template('home.html')
contacts = Contact.objects.all
context = {
'title': 'Welcom to LiSMOtech',
'content': 'DjangoでWEBアプリケーションを開発',
'contacts': contacts,
}
return HttpResponse(template.render(context, request))
from .models import Contactの記述で作成したモデルをインポートしていることに注意してください。
また、contact = Contact.objects.allでContactのオブジェクトを全て取得しています。
続いて、templatesフォルダのhome.htmlを編集します。
Djangoでは{% %}の中にプログラムを記載することで実行されます。
for文の終了には{% endfor %}といった終了タグが必要なことに注意してください。
また、ループ内でデータを取り出すには{{ c.title }}のような記載が必要です。
こちらも合わせて覚えるようにしましょう!
今回の記事ではDjangoのモデル(models.py)について紹介させていただきました。
モデルを使うことによりWEBアプリケーションらしさが出てきましたね!
お問い合わせ用にContactを用意しましたが、その他にもご自身で自由なデータ管理を行うモデルを作成してみてください。
色々作って試していくうちに理解も深まってくると思われます!
次はテンプレートに関すること、またはフォームかクラスビューあたりのトピックでご紹介できれば思っています。
次回も楽しみにしてください!それでは!!!
NEXTGATE LiSMOtechでは中小企業を中心にブランディング・WEBマーケティングを活用したWEB戦略を提供しています。
企業課題・問題に関するご相談、WEBサイト制作やグラフィックデザイン制作のクリエイティブに関するご相談やご質問、お見積りなどお気軽にお問い合わせください。
平日10:00〜19:00
© NEXTGATE LiSMOtech All rights reserved