【Django】③在庫確認アプリを作る ~設定, データベースの作成~
スポンサードリンク
おはようございます。Shotaです。
今回はDjangoで在庫を確認できるアプリを作ってきます。
在庫を確認できるアプリでは、以下のような動きを想定しています。
①商品の情報をデータベースに保存する
②商品の一覧ページを作り、データベースに保存されている商品のタイトルと在庫数、値段が表示されるようにする。
上述のような機能を持った簡単なWebサイトを作ってみましょう。
基本設定
まずは、作成するサイトの全体像を整理していきましょう。全体の流れは以下の通りです。
①ブラウザからリクエストが送られると、Djangoのurls.pyがそれを受け取る。
②受け取ったurls.pyとリクエストを受けたurlを照合し、合致した場合はアプリのurls.pyに処理を渡すようにする。
③アプリは、受け取ったurlの中身に応じて呼び出すviewを指定する。
④呼び出されたviewは、データベースと連携するように設計されており、必要なデータをmodels.pyから取り出す。
⑤models.pyファイルから取り出されたデータも含めたHttpResponseをDjangoが作成し、それをブラウザに返す。
では、コマンドラインでプロジェクトを作っていきましょう。
cd <ディレクトリを作りたいファイル> mkdir goods_project django-admin startproject goods_project cd goods_project django-admin startapp goodsapp
これらをすべてコマンドラインで入力すると、以下のようなディレクトリになります。
goods-app goods_project goods_project goods_app manage.py
次に、settings.py
ファイルでアプリの追加とhtmlファイルを入れるフォルダの設定をしておきましょう。
goods_project/settings.py
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'goodsapp', ] .... TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [BASE_DIR / 'templates'], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
最後にgoods_app
アプリの中でurls.py
ファイルを作っていきましょう。
これで基本設定は完了です。
実際に以下のコマンドを入力して以下の画像が出力されたら成功です。
cd manage.pyがあるディレクトリ py manage.py runserver
▼出力画像
[f:id:ShotaNukumizu_1000:20211026063953p:plain]
データベースの作成
データベースを使うためには、データベースサーバを用意し、そのデータベースサーバにアクセスしてデータの出し入れをするのが一般的です。
言い換えれば、データベースを使うには手間がかかります。しかし、Djangoにはデータベースを簡単に使える機能がデフォルトで備わっています。
その機能を使うことで、簡単にデータベースを作れるのです。
具体的には、models.py
ファイルにデータベースに関係するコードを書くことで、データベースを操作できます。
ざっくりとした流れは以下の通りです。
①
models.py
でモデルを作る
②migration
ファイル(型に基づいて作られたデータベース作成の指示書)を作る
③migrate
する(データベースを作る)
それぞれの内容について順番に見ていきましょう。
models.py
でモデルを作る
最初にモデルを作ります。モデルはデータベースの「型」です。
例えば、ユーザを管理するためのモデルであれば、「ユーザ名」、「パスワード(半角英数字必須)」、「メールアドレス」というような情報を整理する必要があります。
データベースシステムを使ってこれらのデータを作る場合、複雑なコマンドを打つ必要がありますが、Djangoではmodels.py
を使えば簡単にデータベースの原型を作れます。
まずは以下のコードを書いていきましょう。
goodsapp/models.py
from django.db import models class Goods(models.Model): goodsname = models.CharField(max_length=100) price = models.IntegerField() numbers = models.IntegerField()
【コードの解説】
①1行目で、models
モジュールを読み込みます。これは、データベースを簡単に作るために必要な情報があります。
②Goods
という名前でクラスを作成しました。新しいデータベースを作るには、class
定義をすることで作れます。また、models
モジュールからModels
クラスを継承しています。
Charfield
のようなフィールドは、今回の記事では省略します。(後日で詳細に解説します)
migrations
ファイルを作る
モデルを作った後は、migration
ファイルを作ります。
migration
ファイルとは、models.py
で作ったデータベースの型を整理したファイルのことです。このmigration
ファイルは上書きされず、更新があるたびに新しいファイルが作られていきます。
migration
ファイルを作るためには、manage.py
コマンドを使います。
py manage.py makemigrations
これを入力すると、以下のようなコードが出力されると思います。
Migrations for 'goodsapp': goodsapp\migrations\0001_initial.py - Create model Goods
migrate
最後はmigrate
です。これは、migration
ファイルの内容に基づいて、実際にデータベースを操作してtableを作ったり編集したりすることです。
migrate
する場合も、manage.pyコマンドを使います。
py manage.py migate
これを入力すれば、データベースが完成されます。無事にデータベースを作れました。
まとめ
今回はDjangoの基本設定とデータベースを作成することを学びました。次回の記事ではこのデータベースの使い方について説明していきます。
今回の記事はこれで終了です。
【参考記事】