Re:ゼロから始める文系プログラマ

未経験がプログラミングを通して人生を変える

【Django】③在庫確認アプリを作る ~設定, データベースの作成~


スポンサードリンク
 

f:id:ShotaNukumizu_1000:20210924094721p:plain

おはようございます。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の基本設定とデータベースを作成することを学びました。次回の記事ではこのデータベースの使い方について説明していきます。

今回の記事はこれで終了です。

【参考記事】

codor.co.jp