Djangoを使ったWebアプリの作り方 ①初期設定編
Webアプリを作る場合、使用するプログラミング言語は様々あります。それぞれ流行りやメリットデメリットがあり、これが一番というものはなく、状況に応じて選択していくものだと思います。
私はPythonが一番なじみのあるプログラミング言語(でも初心者に毛が生えた程度)であるので、今回はPythonを使ったWebアプリ作成方法であるDjangoについて説明していきます。
Djangoは、Pythonで書かれたWebフレームワークであり、迅速な開発が出来るように設計されています。以下で、Djangoの初期設定までの流れを詳しく説明します。
1. Djangoの概要
Djangoは、Webアプリケーションの開発を簡素化するためのフレームワークで、以下の特徴があります:
MTVアーキテクチャ: DjangoはModel(モデル)、Template(テンプレート)、View(ビュー)の3つのコンポーネントから成り立っています。
管理インターフェース: 自動生成される管理サイトを通じて、データベースの管理が容易です。
セキュリティ: SQLインジェクションやクロスサイトスクリプティング(XSS)などの脅威から保護するための機能が組み込まれています。
2. 初期設定の流れ
Djangoを使用するための初期設定は、以下のステップで行います。
2.1 環境の準備
Pythonのインストール: DjangoはPythonで動作するため、Pythonがインストールされている必要があります。Pythonのバージョンは3.6以上が推奨されます。
仮想環境の作成: プロジェクトごとに依存関係を管理するために、仮想環境を作成します。今回はPipenvを使います。Pipenvとは、Pythonでの開発時に、プロジェクトごとにパッケージ管理や仮想環境の構築を自動で簡単に行えるツールです。
# pipenvをインストールします
pip install pipenv
# コードを作成するディレクトリを作成&移動します。
mkdir myproject
cd myproject
# 仮想環境の作成
pipenv --python 3 # Python3系で仮想環境を初期化すると、Pipfileが自動生成されます。
2.2 Djangoのインストール
仮想環境をアクティブにした後、pipenvを使用してDjangoをインストールします。
pipenv shell # 仮想環境をアクティブ化
pipenv install django # Djangoのインストール
インストールすると、Pipfile.lockが自動で生成されます。このファイルには、実際にインストールされたバージョン詳細情報等が記録されます。これを使う事で他のPCでも、同じ環境を再現することができるようになります。
2.3 Djangoプロジェクトの作成
Djangoがインストールされたら、プロジェクトを作成します。以下のコマンドを実行します。
django-admin startproject mysite .
このコマンドにより、mysiteというディレクトリが作成され、その中にDjangoプロジェクトに必要なファイルが生成されます。
# ファイル構成
root_dir/
|-mysite/
| |- init__.py
| |- asgi.py
| |- settings.py
| |- urls.py
| |- wsgi.py
|
|-manage.py
|-Pipfile
|-Pipfile.lock
2.4 プロジェクトの設定
Djangoの設定は、./mysite/settings.py に記載されています。まずは、言語とタイムゾーンを変更します。
# <settings.py の内容>
# LANGUAGE_CODE = "en-us"
LANGUAGE_CODE = "ja"
# TIME_ZONE = "UTC"
TIME_ZONE = "Asia/Tokyo"
2.4 開発サーバーの起動
プロジェクトディレクトリに移動し、開発サーバーを起動します:
python manage.py runserver
これにより、ローカルサーバーが起動し、ブラウザで http://127.0.0.1:8000/(もしくは、http://localhost:8000/) にアクセスすることで、Djangoの初期画面が表示されます(下図)。
2.5 アプリケーションの作成
Djangoプロジェクト内でアプリケーションを作成します。アプリケーションは、特定の機能を持つモジュールです。以下のコマンドでアプリを作成します:
まずは、先ほど起動したサーバーを”Ctrl+C”で停止します。次に、myapp という名前のアプリを作成します。
# Ctrol + C でサーバーを停止させる。
python manage.py startapp myapp
2.6 アプリケーションの設定
作成したアプリケーションをプロジェクトに登録するために、mysite/settings.pyファイルを開き、INSTALLED_APPSリストにアプリ名を追加します。
INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"myapp",# << 追加
]
2.7 データベースのマイグレーション
DjangoはデフォルトでSQLiteを使用します。データベースの初期設定を行うために、マイグレーションを実行します:
python manage.py migrate
実行すると以下出力されます。
$ python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying sessions.0001_initial... OK
ちなみに、Djangoでデータベースを作成・修正する場合、モデル(myapp/models.pyに定義するクラス)にデータベースの構造を記述します。そして、データベースの作成・修正する流れは以下①~③で行います。
①モデルを作成または変更
まずはmodels.pyでデータベースのテーブル(モデルと呼ぶ)の作成、変更をします。
②マイグレーションファイルを作成する
python manage.py makemigrationsコマンドを実行すると、Djangoがモデルの変更を検出し、変更内容を記録したマイグレーションファイルを作成します。(このファイルには、データベースをどう変更するかが記述されています)
③マイグレーションを実行する
python manage.py migrateコマンドを使って、マイグレーションファイルの指示に従ってデータベースを変更します。これでモデルの変更がデータベースに反映され、アプリケーションの仕様に合わせたデータベース構造が完成します。
ちなみに、データベースの作成・変更するのに①~③の手順をする理由は、ミスによる作業の手戻りを低減するためです。
仮にデータベースの変更を、全て手動で行うとミスが発生しやすくなります(ミスが発生した場合修正も大変)。
そこで、マイグレーションを使い、変更内容を自動で記録し、適用するようにすると、ミスのリスクが大きく低減されデータベースの管理が容易になるためです。
2.8 管理ユーザーの作成
次に、管理サイトにアクセスするためのスーパーユーザーを作成します。Djangoでは、作成したスーパーユーザーで管理サイトにログインすることができます(管理サイトは、自動で作成されます)。
この管理サイトでは、特別な設定をしなくてもデータベースの管理(データの削除・作成など)ができ便利です。
python manage.py createsuperuser
管理者用のユーザー名、メールアドレス、パスワードを設定するとスーパーユーザーが作成されます。
"Superuser created successfully."が表示されれば成功です。
$ python manage.py createsuperuser
ユーザー名 (leave blank to use 'username'): ****
メールアドレス: *******@*****.co.jp
Password:
Password (again):
Superuser created successfully.
2.9 アプリケーションの起動確認
再度開発サーバーを起動し、ブラウザで http://127.0.0.1:8000/admin/ にアクセスします。先ほど作成したスーパーユーザーでログインし、管理画面が表示されれば成功です。
3. 最後
以上で、Djangoの初期設定が完了し、基本的なWebアプリケーションの開発を開始する準備が整いました。次は、アプリの基本的な動作であるCRUD操作を実装していきたいと思います。
お疲れ様でした!!