Django で簡単なページ遷移をする

次の３つのページを遷移するサンプルです。
>http://127.0.0.1:8000/
>http://127.0.0.1:8000/app01/
>http://127.0.0.1:8000/app02/

Django のインストール

```bash
sudo apt install python3-django
```

次を作成します。
>プロジェクト proj01
>>アプリケーション　home
>>アプリケーション　app01
>>アプリケーション　app02

```bash
django-admin startproject proj01
cd proj01/
python manage.py migrate
python manage.py startapp home
python manage.py startapp app01
python manage.py startapp app02
```

この時点で開発サーバーを動かして、ディフォールトのページが表示されることを確認します。


```bash
python manage.py runserver
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179446/b97d725e-8840-c13d-5d2c-fda663925856.png)

ちゃんと表示されたら次にすすみます。

メッセージを表示するプログラムの編集
>home/views.py
>app01/views.py
>app02/views.py

既にあるものを次のものと差し替えます。

```py:home/views.py
from django.http import HttpResponse

def index(request):
    str_out = ""
    str_out += "*** home *** start ***<p />"
    str_out += "ホームです。<p />"
    str_out += "<a href='app01/'>app01</a><p />"
    str_out += "<a href='app02/'>app02</a><p />"
    str_out += "*** home *** end ***<p />"
    return HttpResponse(str_out)
```

```py:app01/views.py
from django.http import HttpResponse

def index(request):
    str_out = ""
    str_out += "*** app01 *** start ***<p />"
    str_out += "こんにちは<p />"
    str_out += "Dec/09 AM 09:45<p />"
    str_out += "<a href='../'>Return</a><p />"
    str_out += "*** app01 *** end ***<p />"
    return HttpResponse(str_out)
```

```py:app02/views.py
from django.http import HttpResponse

def index(request):
    str_out = ""
    str_out += "*** app02 *** start ***<p />"
    str_out += "おはようございます。<p />"
    str_out += "Dec/09 AM 09:55<p />"
    str_out += "<a href='../'>Return</a><p />"
    str_out += "*** app02 *** end ***<p />"
    return HttpResponse(str_out)
```

次を作成します。すべて同じです。
>home/urls.py
>app01/urls.py
>app02/urls.py

```py:home/urls.py
from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]
```

proj01/settings.py を編集

```py:proj01/settings.py
（省略）
INSTALLED_APPS = [
    'home',
    'app01',
    'app02',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]
（省略）
```

proj01/urls.py の編集

```:proj01/urls.py
from django.contrib import admin
from django.urls import path
from django.urls import include

urlpatterns = [
    path('', include('home.urls')),
    path('app01/', include('app01.urls')),
    path('app02/', include('app02.urls')),
    path('admin/', admin.site.urls),
]
```

開発サーバーを起動して確認

```bash
python manage.py runserver
```
http://127.0.0.1:8000/
![home.png](https://qiita-image-store.s3.amazonaws.com/0/179446/ebab3dd1-7e38-3c9f-bb02-ab2392b9a933.png)

http://127.0.0.1:8000/app01/
![app01.png](https://qiita-image-store.s3.amazonaws.com/0/179446/d675807f-3f90-a8d5-941f-5ce9a22bbe17.png)

http://127.0.0.1:8000/app02/
![app02.png](https://qiita-image-store.s3.amazonaws.com/0/179446/a3675849-f087-c3d2-2447-31b914bb7663.png)

次のバージョンで確認しました。

```text
$ python --version
Python 3.10.7

$ django-admin --version
4.1.3
```

サーバーを gunicorn にする時は、次のように起動します。

```bash
gunicorn proj01.wsgi
```

gunicorn のインストール

```bash
sudo apt install gunicorn
```