見出し画像

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でも、同じ環境を再現することができるようになります。

Pipfile.lock記載内容

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操作を実装していきたいと思います。
お疲れ様でした!!


いいなと思ったら応援しよう!