【簡単】10分でWindowsにDjangoの環境構築

# 始めに
こんにちは、ryoです。  
普段使用しているPCはMacですが、今回たまたまWindowsにDjangoの環境を構築する機会があったので、情報共有も兼ねてまとめたいと思います。  
最低限ですが、この記事でまとめている手順を踏んでもらえばローカルサーバーの起動（トップページの表示）までできるようになります。  
検証環境はWindows10です。

# ①Pythonのインストール
まずPythonをインストールします。 
（すでにPythonをインストール済みの方は飛ばしてください。 )  
インストールはProgateの説明が分かりやすいと思いますので、そちらを参照ください。

https://prog-8.com/docs/python-env-win

# ②仮想環境の構築
次に仮想環境を構築します。  
仮想環境を構築することでプロジェクトに必要なライブラリだけを管理することが出来るようになるメリットがあります。  
仮想環境を構築するにはコマンドプロンプトでワークディレクトリ（仮想環境を構築するディレクトリ）に移動し、以下のコマンドを実行します。  
ここでは仮想環境名をvenv_mysiteとしています。
~~~bash
work_dir > python -m venv venv_mysite
~~~
実行後、ワークディレクトリにvenv_mysiteというフォルダ（仮想環境）が作成されます。
また、Python仮想環境については以下のサイトを参照ください。  

https://www.manajob.jp/python/python-app/venv

# ③仮想環境起動
次に仮想環境を起動します。
引き続き、カレントディレクトリがワークディレクトリの状態で以下のコマンドを実行します。  
~~~bash
work_dir > venv_mysite/Scripts/activate.bat
~~~
実行すると以下のようにコマンドプロンプトのカレントディレクトリの前に(仮想環境名)が追加されます。  
変われば、仮想環境を正常に起動できた証です。
~~~bash
(venv_mysite) work_dir > 
~~~
今後の手順は全部仮想環境での作業になりますので、基本は仮想環境を起動した状態にしておいてください。  
もし仮想環境を終了する場合は以下のコマンドを実行することで終了できます。
~~~bash
(venv_mysite) any_dir > deactivate
~~~

# ④Djangoのインストール
続いて、pipコマンドでDjangoをインストールします。
~~~bash
(venv_mysite) work_dir > python -m pip install Django
~~~
インストール完了後、正しくインストール出来たかバージョンを以下のコマンドで確認しましょう。バージョンが表示されれば問題なくインストール出来ています。
~~~bash
(venv_mysite) work_dir > django-admin --version
~~~

# ⑤Djangoプロジェクトの作成
続いてDjangoプロジェクトを作成します。  
このDjangoプロジェクトがWebアプリケーション全体を管理する枠組みとなります。  
作成は仮想環境ディレクトリに移動してからプロジェクト作成コマンド実行をします。  
今回プロジェクト名はmysiteとしました。
~~~bash
(venv_mysite) work_dir > cd venv_mysite
(venv_mysite) work_dir\venv_mysite > django-admin startproject mysite
~~~
コマンド実行後、mysiteというプロジェクトフォルダが作成されます。

# ⑥Djangoアプリケーションの追加
DjangoプロジェクトにDjangoアプリケーションを追加します。  
Djangoアプリケーションというのは実際にWebアプリケーションでサービスを提供する要素を機能単位ごとなど管理しやすいまとめたものになります。  
Djangoプロジェクト内に複数のDjangoアプリケーションを追加することができます。  
ここでは例としてmyappというアプリケーションをコマンドで追加します。
~~~bash
(venv_mysite) work_dir\venv_mysite > cd mysite
(venv_mysite) work_dir\venv_mysite\mysite > django-admin startapp myapp
~~~
コマンド実行後、myappというアプリケーションフォルダが作成されます。  
ここまでで基本的な環境構築は完了です。

# ⑦Djangoプロジェクトのurls.pyを編集
ユーザからサーバにリクエストが飛んできたときにURLごとにサーバで何の処理をするのか決定するのがurls.pyです。（URLディスパッチャと言ったりします）  
work_dir\venv_mysite\mysite\mysite\urls.pyを以下のように編集します。  
ちなみにmysiteディレクトリ内のmysiteフォルダはDjangoプロジェクト全体を管理するためのファイルが格納されています。（mysiteディレクトリ内のmysiteフォルダはDjangoプロジェクトを作成時に自動で作成されます。）  

~~~python:work_dir\venv_mysite\mysite\mysite\urls.py
from django.contrib import admin
from django.urls import path
from django.conf.urls import include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('myapp/', include('myapp.urls')),
]
~~~

ここではDjango管理者用サイトのURLの設定とmyapp/のURLの場合は処理をmyappのurls.pyに委譲しています。（次のステップでmyappのurls.pyを設定）

# ⑧Djangoアプリケーションのurls.pyの設定
つづいて、Djangoアプリケーション（myapp）内にurls.pyを作成し、Djangoアプリケーション内でURLごとに処理を決定するようにします。  
⑦で設定したようにmyapp/のurlだった場合はDjangoアプリケーション（myapp）内のurls.pyで処理を決定します。これはアプリケーションごとにURL、処理の一連の流れを管理しやすいためです。  
work_dir\venv_mysite\mysite\myapp\urls.pyを作成し、以下のように編集します。

~~~python:work_dir\venv_mysite\mysite\myapp\urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('',  views.index, name='index'),
]
~~~
これでユーザからのリクエストのURLがmyapp/だった場合に views.pyのindexメソッドを呼び出すように設定ができました。

# ⑨views.pyの設定
work_dir\venv_mysite\mysite\myapp\views.pyのindexメソッドの処理を設定します。
ここでは「Hello MyApp!」とユーザーのブラウザ画面に表示する処理を設定しています。
~~~python:work_dir\venv_mysite\mysite\myapp\views.py
from django.shortcuts import render
from django.http import HttpResponse

def index(request):
    return HttpResponse('<h1>Hello MyApp!</h1>')
~~~

# ⑩settings.pyの設定
最後にwork_dir\venv_mysite\mysite\mysite\settings.pyの編集をします。
編集はINSTALLED_APPSの最後にDjangoアプリケーション名を足すだけです。

~~~python:work_dir\venv_mysite\mysite\mysite\settings.py
# 略
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp', # 追記
]
# 略
~~~

# ⑪サーバーの起動
Djangoプロジェクトディレクトリで以下のコマンドを実行し、ローカルサーバーを起動します。
~~~bash
(venv_mysite) work_dir\venv_mysite\mysite > python manage.py runserver
~~~
コマンドを実行後、ブラウザを開き「 http://127.0.0.1:8000/myapp/ 」
のページを表示させます。
「Hello MyApp!」が表示されたら基本的な環境構築（ローカルサーバーの実行まで）完了です。

# 終わりに
お疲れ様でした。  
この記事ではPythonのインストールから基本的な環境構築（ローカルサーバーの実行まで）の手順を解説しました。  
始めのうちは各ファイルの役割に戸惑うこともあるかと思いますが、ゆっくり理解していけばすぐに慣れるかと思います。  
閲覧いただきありがとうございました。