Djangoのstrartprojectと'Hello World'までの初期設定

## 本記事について
Djangoを始める際に必要なコマンドを備忘録として記事に残す．
本記事では，startprojectから，runserverの実装と書くファイルの設定について一例として取り上げる．

## 目次
- ディレクトリの作成(startproject)
- アプリケーションディレクトリ及び必要フォルダの作成
- 設定ディレクトリ上の設定
- runserverの実行とlocalhost上に"hello world"を表示させる
- まとめ

## ディレクトリの作成(startproject)
以下のコマンドを入力し，プロジェクト用のディレクトリを作成します．

```
$ django-admin startproject <プロジェクト名>
```

既にフォルダを作成しており，その上にディレクトリを作成したい場合は以下の＜プロジェクト名＞の後に「.」を付ける

```
$ django-admin startproject <プロジェクト名> .
```

## アプリケーションディレクトリ及び必要フォルダの作成
### アプリケーションディレクトリの作成
アプリケーションディレクトリとは，models.pyやviews.pyなど，実際にアプリケーションを作成するディレクトリのことを言う．
Djangoは，デフォルトでアプリケーションディレクトリが内装されていないため，以下のコマンドで作成する必要がある．

```
$ python manage.py startapp <アプリケーションディレクトリ名>
```
<アプリケーションディレクトリ名>は自由な名でよい．

### templatesディレクトリの作成
HTMLファイルを格納するフォルダを作成する．
これは設定ディレクトリやアプリケーションディレクトリと同じフォルダに作成する．

```
$ mkdir templates
```

## 設定ディレクトリ上の設定
### templatesディレクトリとアプリケーションディレクトリの読み込み設定
設定ディレクトリ内のsettings.py上にtemplatesディレクトリとアプリケーションディレクトリを認識させる設定を追加する．

``` settings.py
...

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    '<アプリケーションディレクトリ名>' #この部分を追加
]

...

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR, 'templates'], #この部分を追加
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
```

### urls.pyの作成と設定
アプリケーション上にurls.pyを作成する．
次に，設定ディレクトリ上のurls.pyとアプリケーションディレクトリ上のurls.pyをリンクさせる．
そのため，設定ディレクトリ上のurl.pyに以下のコードを加える．

``` urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('yogaapp.urls')), #この部分を追加
]
```

## runserverの実行とlocalhost上に"hello world"を表示させる
### htmlファイルの作成
表示するhtmlファイルを，templatesフォルダ上に作成する．
ここでは簡易的に以下のindex.htmlを作成する．

``` index.html
Hello World
```

### views.pyの実装
views.pyとは，サーバーとクライアント間のリクエストやリスポンスにまつわる処理を管理するファイルである．
djangoの場合，ほとんどのロジックはviews.py上に書き，他のフレームワークのようにhtmlファイル上にロジックを書くことを最小限に抑えるような仕組みとなっている．
ここでは，index.htmlを表示させるレスポンスを実装する．

``` views.py
from django.shortcuts import render

def example_func(request):
    return render(request, 'index.html')
```

### urls.pyの実装
DjangoのURLディスパッチャは、URLに応じてどのようなページを表示するのかを決定する通信指令係（dispatcher）のようなものです．
アプリケーションディレクトリ上のurls.pyに以下のコードを書く．
これは'example/'のurlに移ったとき，views.pyのexample_funcを呼び出すというものである．

``` urls.py
from .views import example_func

urlpatterns = [
    path('example/', example_func, name='example'),
]
```

### runserverの実行
以上のファイルの作成が完了すれば，ローカルサーバーを立ち上げ，index.htmlの画面を表示させることができる．
manage.pyファイルのあるディレクトリ上にいることを確認し，以下のコマンドを実行する．

```
$ python manage.py runserver
```

サーバが無事立ち上がった後，ブラウザでlocalhost:8000/exampleと打ち込むことで，'Hello World'が表示される．

## まとめ
以上の過程により，djangoで，startprojectからrunserverの実行とhello worldの表示が可能となる．
この過程は一例に過ぎないが，Djangoのチュートリアルでよく見かける構成のプロジェクトである．