前のパートに戻る 完了して次のパートへ  

  1-1 Djangoプロジェクトの作成

実際にDjangoでWebアプリケーションを作成します。まだDjangoの環境構築が終わっていない方は0章に環境構築方法を記載しているので、そちらを参考に環境構築を行ってください。

この章で学べること


- Djangoのプロジェクトとアプリの違い
- Djangoプロジェクトの作成方法
- ローカルサーバーの起動方法

Djangoプロジェクトとは


プロジェクトとは、データベースの設定などのDjango全体の設定群をまとめたひとつの単位です。 また、プロジェクトとは別にアプリケーションという単位が存在します。アプリケーションは実際のWebアプリケーションのことです。ひとつのDjangoプロジェクトには複数のアプリケーションを作成することができます。

プロジェクトとアプリケーションの違いについては、公式ドキュメントにも記述がありますので補足として引用します。

プロジェクトとアプリケーションの違いとは何でしょうか?アプリケーションとは、実際に何らかの処理を行う Web アプリケーションを指します。例えばブログシステムや公開レコードのデータベース、単純な投票アプリといった具合です。プロジェクトとは、あるウェブサイト向けに設定とアプリケーションを集めたものです。一つのプロジェクトには複数のアプリケーションを入れられ ます。また、一つのアプリケーションは複数のプロジェクトで使えます。 はじめての Django アプリ作成、その 1 | Django ドキュメント | Django

アプリケーションをどのように分割するのか、明確な基準はないため、正直熟練者であっても悩ましいところです。 ただし、今回のコースでは1プロジェクト1アプリで作成していきますので、心配しないでくださいね。

新規Djangoプロジェクトの作成


それでは、実際にプロジェクトを作成してみましょう!

下記コマンドでプロジェクトを作成できます。

$ pipenv run django-admin startproject config .

pipenv run は「pipenvで作成した仮想環境上で」という意味です。 run 以降をpipenvの仮想環境上で実行します。

プロジェクトを作成するコマンドは django-admin startproject <プロジェクト名> <作成するディレクトリ> となっています。<作成するディレクトリ> は省略できますが、 .(ドット) を指定することでカレントディレクトリ直下にプロジェクトを展開してくれるようになります。

また、ここでは <プロジェクト名> を config としています。本来であれば kanban などにすべきですが、実際のプロジェクト名には設定ファイルが集約されるので、 config とすることで、設定ファイルが config 内に作成されます。 少々わかりにくいですが、 .(ドット) と合わせて、これもプロジェクトをわかりやすく作成するためのコツです。

私は実務でもこのように作成していますので、ぜひ試してみてくださいね。

作成されたファイルの解説


プロジェクトを作成することで、以下のようなディレクトリ構成になります。

kanban
├── Pipfile
├── Pipfile.lock
├── config
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py


Pipfileについて

Pipfile と Pipfile.lock はPipenvでDjangoをインストールした際に自動で生成されたものです。Pythonのバージョンやライブラリの情報がまとめられています。


configディレクトリについて

./config 以下には4つのファイルが存在します。

__init__.py は、Pythonにディレクトリを認識させるためのファイルです。 __init__.py がディレクトリ内に存在しないと、そのディレクトリのファイルを参照できなくなります。特別なことがない限り、 __init__.py は空のファイルとなります。

settings.py は、Djangoプロジェクト全体に関わる設定を記述するファイルです。データベースの設定などもこのファイルに記述します。

urls.py は、ルーティング(URLの設定)を記述するファイルです。プロジェクトを作成した段階で、自動的にadminページ(管理画面機能)のルーティングが設定されています。

wsgi.py は、WSGI(Web Server Gateway Interface)に関する設定を記述するファイルです。ざっくり言うと、サーバーに関する設定を記述しますが、開発サーバーであれば初期設定で動作するので、このコースでは特段編集しません。 ちなみにWSGIはウィズギーと読みます。


manage.pyについて

manage.py は開発サーバーを起動したり、データベースのマイグレート(作成)をしたりする際の命令を行うためのファイルです。

$ python manage.py <コマンド名>

で、あらかじめ定義されたコマンドを実行できます。

開発用サーバーの起動


プロジェクトを作成すると、開発用のサーバーが起動できるようになります。早速起動してみましょう。

下記コマンドで開発サーバーを起動できます。

$ pipenv run python manage.py runserver
You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

といったエラーが出るかと思いますが、一旦はスルーして大丈夫です。 下記のように表示されて、 http://127.0.0.1:8000/で開発サーバーにアクセスできます。ブラウザで開いてみましょう。

Django version 2.2, using settings 'config.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

ブラウザで http://127.0.0.1:8000/ にアクセスすると、下記のようなページに飛ぶかと思います。

正しく表示されていれば、無事にプロジェクトが作成できています! おめでとうございます🎉

議論
4 質問
このコースの評価は?