Djangoチュートリアル①（インストールとプロジェクトの作成）

# はじめに

巷で流行っている Django に手を出してみる。[現場で使える Django の教科書（基礎編）](https://www.amazon.co.jp/%E7%8F%BE%E5%A0%B4%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B-Django-%E3%81%AE%E6%95%99%E7%A7%91%E6%9B%B8%E3%80%8A%E5%9F%BA%E7%A4%8E%E7%B7%A8%E3%80%8B-%E6%A8%AA%E7%80%AC-%E6%98%8E%E4%BB%81/dp/4802094744)、[Django | Document](https://docs.djangoproject.com/ja/3.1/intro/) を参考に進める。日本語記事があって助かる。実行環境は以下。
- Python == 3.9.2
- Django == 3.1.7

（2021/04/12 追記）
上記環境は個人所有の Macbook 環境である。2021/04/06 に __Django 3.2 LTS がリリース__されたこともあり、会社 PC である Windows 10 Pro 上の WSL2 環境でも開発環境を作成したので、本記事末尾に追記する。ちなみに、すでに Django がインストールされている場合のバージョンアップは以下コマンドで実行できる。

```
$ python -m django --version
# 3.1.7
$ pip install Django -U
$ python -m django --version
# 3.2
```

# Django とは

Python で Web アプリケーションを作成するためのフレームワークで、Web アプリケーションを作成するために必要な機能が揃っている。Instagram などにも使われていて、利用実績も非常に多い。

# Django のインストール

[Django のインストール方法](https://docs.djangoproject.com/ja/3.1/topics/install/#installing-official-release)を参考に公式リリースバージョンを以下コマンドでインストール。

```
$ pip install --upgrade pip  # pip 自体のアップデート
$ python -m pip install Django
```

以下コマンドで、Django インストールされているかどうか（またどのバージョンがインストールされているか）を調べる。

```
$ python -m django --version
# 3.1.7
```

# プロジェクト作成

初めて Django を使う場合、最初にセットアップを行う必要がある。プロジェクトの雛形を以下コマンドで作成する。

```
$ django-admin startproject mysite
# 以下のようなファイルが自動で作成される
mysite       (<- ベースディレクトリ)
|-- manage.py
`-- mysite   (<- 設定ディレクトリ)
    |-- __init__.py
    |-- asgi.py
    |-- settings.py
    |-- urls.py
    `-- wsgi.py
```

mysite はプロジェクトの名前で、任意の名前をつけられる。ここで使用されている django-admin は管理コマンドユーティリティであるが、基本的にはプロジェクトを作成時に1回使用するだけで、以降は startproject でプロジェクトを作成した際に自動で作成される manage.py で Django 管理コマンドを使う。

上記構成を見ると、mysite というディレクトリが2つできているため、わかりにくい。そこで `$ django-admin startproject mysite` を実行するのではなく、以下のようにプロジェクトを作成する。

```
$ mkdir mysite
$ cd mysite
$ django-admin startproject config .  # 第2引数に . を指定
# 以下のようなファイルが自動で作成される
mysite       (<- ベースディレクトリ)
|-- manage.py
`-- config   (<- 設定ディレクトリ)
    |-- __init__.py
    |-- asgi.py
    |-- settings.py
    |-- urls.py
    `-- wsgi.py
```

config は任意の名前を設定できる。このようにすることで同じ名前のディレクトリが作成されずわかりやすくなる。

# 開発用サーバー

作成したプロジェクトがうまく動作するかを確認する。（※データベースマイグレーションについての警告が出ているが、この場では一旦無視。）

```
$ cd mysite
$ python manage.py runserver
# 以下出力結果
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 18 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.
March 28, 2021 - 06:41:26
Django version 3.1.7, using settings 'config.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
```

上記で Django 開発サーバーを起動。これは開発中の利用のみを考えて作られたサーバーであるため、__運用環境では絶対に使用するな__とのこと。[ http://127.0.0.1:8000/]( http://127.0.0.1:8000/) にアクセスすると、以下のようなページが表示されており、サーバーが起動されていることが確認できる。![runserver.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/769545/4c3fc743-40b7-5284-647d-8fe621e4c20f.png)

便利なことに、このサーバーはコード変更の反映に再起動は必要ないらしい。（ファイルの追加のような変更時には再起動が必要。）

# おわりに

とりあえず Django のインストールとプロジェクトの作成、開発サーバーの起動まで。今後、アプリケーション作成などの詳細を書いていくこととする。

関連記事のリンクは以下。
- [Djangoチュートリアル②（ビューの作成）](https://qiita.com/honda28/items/c91f78238ea3d53e776d)
- [Djangoチュートリアル③（モデルの作成、Django Admin）](https://qiita.com/honda28/items/04bc74c28b816aa10e2c)
- [Djangoチュートリアル④（テンプレート）](https://qiita.com/honda28/items/f62dc31e470ef3901706)
- [Djangoチュートリアル⑤（汎用ビュー）](https://qiita.com/honda28/items/7150a5df0213dc6a3927)
- [Djangoチュートリアル⑥（自動テスト）](https://qiita.com/honda28/items/f21fe43d29ffe7e15b5d)
- [Djangoチュートリアル⑦（静的ファイル）](https://qiita.com/honda28/items/bd0bfe8731a17609907c)

# Windows 10 Pro / WSL2 開発環境構築（2021/04/12 追記）

WSL2 に Ubuntu 20.04 LTS をインストールしている環境を前提とする。この状態では、python3 == 3.8.5 がデフォルトでインストールされている（` $python3 --version` で確認できる）。ちなみに Django 3.2 では Python 3.6 から 3.9 まで対応している。以下コマンドで Django をインストールするために必要な pip3 をインストールする。（余談だが、[パッケージ管理コマンド aptとapt-getの違い](https://qiita.com/quzq/items/8e47414bf95d1fcfa24a)によると、`apt-get` よりも `apt` の方がよいらしい。ずっと `apt-get` を使ってた。。。）

```
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install python3-pip
$ pip3 install --upgrade pip
```

個人的に python3 や pip3 と打つのが嫌なので、.bashrc に以下のようなエイリアスを追記しておく。__以降の python は python3、pip は pip3 を意味している。__（ .bashrc に追記後は `$ source .bashrc` を忘れずに実行して変更を反映しておく。）

```~/.bashrc
# User specific aliases and functions
alias python='python3'
alias pip='pip3'
```

続いて、仮想環境を構築してアクティベートする。

```
$ cd [project_dir]
$ python -m venv [virtual_env]
$ cd [virtual_env]
$ source bin/activate
```

仮想環境が作成できたので、Django をインストールする。

```
([virtual_env])$ python -m pip install Django
([virtual_env])$ python -m django --version
# 3.2
```

以降は本記事前半で記述しているため、割愛する。