【初心者向け】DjangoでMySQLのデータベースにおける管理画面を作成する方法

【初心者向け】 DjangoでMySQLの データベースにおける 管理画面を作成する方法のアイキャッチ プログラミング

本記事は、以下の目的で作成しています。

Djangoをゼロから始めてデータベースの接続方法する方法が分かる
Djangoのデータベースの管理画面の作成方法が分かる

Djangoについて

ここでは、Djangoとは何か?そして、データベースの一種であるMySQLとは何か?についてご紹介していきます。

Djnagoとは

Djangoは、WEBアプリに必要となる管理画面、データベース接続、ログイン認証、セキュリティ対策などを一通り作成できることができる、Webアプリのフレームワークです。YoutubeやInstagramもDjangoを使ったWEBアプリです。
また、Djangoはプログラミング言語としてPythonを使用します。Pythonは、少ないコードで簡潔にプログラムを書けること、特に機械学習などにおいて専門的なライブラリが豊富にあることがメリットです。

Djangoの詳細については、以下の記事が参考になりますのでぜひご覧ください。

Djangoとは何か?できることや習得するメリットを解説
本記事では、Djangoについて解説します。DjangoはPythonフレームワークの中でも高いシェアを誇っています。Pythonエンジニアになるなら、Djangoも合わせて習得するのがおすすめです。本記事ではDjangoとは何か、Djan...

本記事では、DjangoでWEBアプリを作成する際にほぼ必ず最初に実施する、環境のインストール、プロジェクトとアプリケーションの作成し、データベースへの接続をしたあと、管理者用の管理画面の作成するところまでの流れを紹介します。

データベース(MySQL)とは

データベースとは、サーバーPCなどの格納される、構造化した情報またはデータの組織的な集合です。アプリケーションのユーザーのデータなどもこのデータベースに格納されます。また、一般的なタイプのデータベースにおけるデータの読み込みや書き込みには、クエリ言語(SQL)を使用します。

本記事では、データベースサーバーやSQLとして、MySQLを使用します。MySQLとは、世界でもっとも利用されている「データベース管理システム」です。MySQLはオープンオースのため低コストであるにも関わらず、大規模なアプリにも使用されており、「Yahoo!」「Google」「Nokia」「YouTube」などトップ企業でも採用されています

MySQLの詳細については、以下の記事が参考になりますのでぜひご覧ください。

侍エンジニアブログ - プログラミング学習のすべてがココに。

Djangoの環境を構築する

Djangoの環境を構築していきます。具体的には以下の流れで構築していきます。

  • Pythonとpipをインストールする
  • Djangoに必要なパッケージをインストールする
  • MySQLをインストールする

Pythonとpipをインストールする

Djangoを始める前に、Python本体と、Pythonのライブラリをインストールするために必要となるpipをインストールします。

Python本体のインストールについては、以下の記事をご覧ください。

Pythonのインストール方法をOS別に解説(Windows・Mac・Linux) | 侍エンジニアブログ
この記事では「 Pythonのインストール方法をOS別に解説(Windows・Mac・Linux) 」について、誰でも理解できるように解説します。この記事を読めば、あなたの悩みが解決するだけじゃなく、新たな気付きも発見できることでしょう。お...

pipのインストールについては、以下の記事をご覧ください。

pipのインストール|Windows、Mac、Linux全て対応
pipのインストール方法を知りたいですか?当記事では、Windows、Mac、Linuxのそれぞれで違うインストール方法を全て開設しています。また、pipをインストールするなら、知っておきたい便利なPythonモジュール10選もご紹介してい...

Djangoに必要なパッケージをインストールする

Djangoに必要なパッケージのインストールや環境構築を実施していきます。

まずは「virtualenv」のインストールします。「virtualenv」は仮想環境を作成するためのパッケージです。ローカルPCにおいてPythonの開発を行うときは、仮想の実行環境を作成してそこにパッケージをインストールすることで、開発内容に応じて仮想環境を切り替えて使用することができるためです。

「virtualenv」はターミナルにおいて下記のコマンドを実行してインストールします。

$ pip install virtualenv

アプリ開発用のフォルダを作成します。フォルダ名は任意で問題ないですが、ここでは「django」というフォルダを作成します。

$ mkdir django

作成したフォルダに移動し、virtualenvコマンドで、仮想環境を作成します。

$ virtualenv -p python3 venv

仮想環境を作成すると、「venv」というフォルダが作成されます。また、djangoフォルダ直下に「requirements.txt」を作成します。この時点で、下記のフォルダ構成となります。

django(フォルダ)
├── requirements.txt
└── venv(フォルダ)

仮想環境を起動する方法は、使用しているOSにより異なり、Windowsの場合は以下のコマンドにより起動します。

$ venv/Scripts/activate

Macの場合は以下のコマンドにより起動します。

$ source venv/bin/activate

仮想環境を作成したら、Djangoのパッケージをインストールしていきます。まず、「requirements.txt」に以下の内容を記述します。

django/requirements.txt
Django~=3.2.10
mysqlclient==2.1.0

作成後に、以下のコマンドを実行すると仮想環境にDjangoがインストールされます。

(venv) $ pip install -r requirements.txt

これで、Djangoに必要なパッケージをインストールは完了です。

MySQLをインストールする

MySQLをローカルPCにインストールします。インストール方法については、以下の記事をご覧ください。

https://www.fenet.jp/infla/column/server/mysql%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%AE%E6%96%B9%E6%B3%95%E3%81%A8%E3%81%AF%EF%BC%9F%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E6%89%8B%E9%A0%86%E3%82%92os/

MySQLのインストールが完了したら、下のコマンドでMySQLの起動を行い、接続できるか確認してみましょう。

$ mysql -u root -p
...
mysql>

このままDjangoで使用するデータベースを作成します。mysqlに接続した状態で以下のコマンドを実行します。今回は、「database_name」という名前のデータベースを作成します。

mysql> create database database_name;

以下の、「show databases;」を実行して、「database_name」のデータベースが作成されていることを確認しましょう。

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| database_name      |
| sys                |
+--------------------+
6 rows in set (0.01 sec)

Djangoで管理画面を作成する

Djangoの管理画面を作成していきましょう!流れとしては、以下の流れとなります。

  • プロジェクトを作成する
  • アプリケーションを作成する
  • データベース処理を設定する
  • 管理画面を作成する

プロジェクトを作成する

まずはDjangoのプロジェクトを作成します。OSがmacの場合は以下のコマンドを実行してください。

(venv)$ django-admin startproject mysite .

OSがwindowsの場合は以下のコマンドとなります。

(venv)$ django-admin.exe startproject mysite .

コマンド実行後、下記のようにプロジェクトとなる「mysite」フォルダとプロジェクト関連のファイルが作成されます。

django
├── mysite // プロジェクトディレクトリ
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings.py // プロジェクト設定ファイル
│   ├── urls.py // プロジェクト用ルーティング定義ファイル
│   └── wigi.py // webサーバーとの接続用ファイル
├── manage.py // コマンド実行ファイル
├── requirements.txt
└──  venv

作成されたsettings.pyの、「ALLOWED_HOSTS」、「DATABASE」の部分を以下のように変更し、「STATIC_ROOT」を以下のようにファイルの最後に追加してください。

django/mysite/settings.py

ALLOWED_HOSTS = ['localhost',]

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'database_name',
        'USER': 'root',
        'PASSWORD': 'mysqlサーバーのパスワードを入力',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

STATIC_ROOT = os.path.join(BASE_DIR, 'static')

アプリケーションを作成する

次に、プロジェクトの中にアプリケーションを作成していきます。以下のコマンドを実行するとアプリケーションの部分が作成されます。

(venv)$ python3 manage.py startapp app

以下のように、アプリケーションディレクトリとなる「app」フォルダとアプリケーション関連のファイルが作成されます。

django
├── app // アプリケーションディレクトリ
│   ├── admin.py // 管理サイト設定ファイル
│   ├── apps.py // アプリケーション構成設定ファイル
│   ├── __init__.py
│   ├── migrations // マイグレーションファイルを格納するディレクトリ
│   │   └── __init__.py
│   ├── models.py // モデル定義ファイル
│   ├── tests.py // テストコードファイル
│   └── views.py // ビュー定義ファイル
├── mysite 
├── manage.py 
├── requirements.txt
└── venv

アプリケーションを使えるようにするには、「mysite/settings.py」の「INSTALLED_APPS」 にアプリケーションを追加します。

mysite/settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app', # 追加
]

データベース処理を設定する

ここでは、データベース処理をする設定を反映していきます。

Djangoでは、models.pyを設定することでSQLを意識することなくデータベースに対する処理をすることが出来ます。今回は例として、投稿機能のモデルとなる「Post」クラスをmodels.pyに設定していきます。「django/app/models.py」に対して、下記のコードを記述します。

django/app/models.py

from django.conf import settings
from django.db import models
from django.utils import timezone

class Post(models.Model):
	author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
	title = models.CharField("タイトル", max_length=200)
	content = models.TextField("本文")
	created = models.DateTimeField("作成日", default=timezone.now)

	def __str__(self):
		return self.title

「author」は著者、「title」はタイトル、「content」は本文、「created」は作成日のフィールドで、それぞれ投稿した情報を格納します。Djangoではこのように、フィールドを設定したモデルのクラスを作成することで、データベースへのデータ保存と取り出しの設定を実施していきます

models.pyの準備が完了したのでmigrateでDjangoでデータベースを構築します。以下のコマンドによって、作成した「Post」モデルがMySQLのデータベースに反映されます。

(venv) $ python manage.py makemigrations
(venv) $ python manage.py migrate

管理画面を作成する

djangoでは管理者用の管理画面がフレームワーク内に組み込まれています。管理画面は新規作成、編集、削除などのでデータベース操作を、web上で実施できる便利な画面です。ここでは管理画面でデータを操作できるよう作成して確認していきます。

まず、「django/app/admin.py」に下記のソースコードを追記します。具体的には、「admin.site.register」関数の引数に、「django/app/models.py」の「Post」モデルを指定し、管理画面からデータベースを操作できるようにします。

django/app/admin.py

from django.contrib import admin
from .models import Post

admin.site.register(Post)

次に、ターミナルで下記コマンドを実行して、管理者ユーザーを作成します。コマンド実行後、出力される案内に応じて、管理者のユーザー名、メールアドレス、パスワードを入力します。

(venv) $ python3 manage.py createsuperuser

さらにターミナルで下記のコマンドを実行して、OSがmacの場合はアプリケーションを起動させてます。

 (venv) $ python manage.py runserver

起動後にブラウザでhttp://localhost:8000/admin/にアクセスすると、管理画面のログイン画面が表示されます。ユーザー名とパスワードを入力すると、以下の管理画面が表示されます。この画面から、各モデルの内容を確認したり、作成、編集、削除することができます。

djangoの管理画面のイメージ

さいごに

これで、DjangoでのWEBアプリ作成における、環境のインストール、プロジェクトとアプリケーションの作成、データベースへの接続、管理画面の作成などの、環境構築方法についての説明を終わります。

本記事ではDjangoの環境構築までに留まっておりますが、実際にアプリケーションを作成してインターネットに公開するまでを知りたい、という方は、下記のリンクをぜひご覧ください!

【初心者向け】WEBアプリ作成して公開する方法(Django + Nginx + MySQL + docker + AWS)
このプランによって、Django x Nginx x mysqlのWEBアプリをdockerコンテナ環境でイチから作成し、AWSにてインターネットに公開することが出来るようになります。このプランは、初心者・独学でもWEBアプリの作成・公開ま...

コメント

タイトルとURLをコピーしました