🐂

【Hello World④】Django @ Python(runserver編)

2024/04/05に公開

PHPの次は、2010年代後半の第三次人工知能ブームでディープラーニング用の言語として復活したPython言語でHello Worldアプリを作ります。フレームワークは「Django」を使います。

DjangoでPythonのWebアプリを作ります

①フォルダ・ファイルを作成

以下の構成でフォルダとファイルを作ります。

フォルダ構成
django
 ├─compose.yaml   # コンテナ作成時の指示を記載したファイル
 └─Dockerfile     # イメージ作成時の指示を記載したファイル

PowerShellで以下のコマンドを実行し、フォルダと空のファイルを作って、VSCodeで開きます。
※以降のコマンドは「django」フォルダで実行します。

PowerShell
mkdir django; `
cd django; `
New-Item Dockerfile; `
New-Item compose.yaml; `
code Dockerfile; `
code compose.yaml

「compose.yaml」、「Dockerfile」には以下の内容を記述します。

compose.yaml
services:
  web:
    container_name      : django
    build               : .
    ports:
      - 8000:8000
    volumes:
      - ./web:/app
    depends_on:
      - db
    environment:
      - PYTHONUNBUFFERED=1
    working_dir         : /app
    command             : python manage.py runserver 0.0.0.0:8000
    networks: 
      - web_app_network
  db:
    container_name      : postgres
    image               : postgres:14.2
    ports:
      - "5432:5432"
    volumes:
      - ./db:/var/lib/postgresql/data
    environment:
      POSTGRES_DB       : testdb
      POSTGRES_USER     : testuser
      POSTGRES_PASSWORD : testpass
    networks: 
      - web_app_network
networks: 
  web_app_network:
    driver:      bridge
Dockerfile
FROM python:3.10
RUN  pip install --upgrade pip && pip install Django==4.2.7 psycopg[binary]

②Djangoのプロジェクトを作成

以下のコマンドを実行して、Djangoのプロジェクトを作成します。
※「web」、「db」フォルダが作成されます。

PowerShell
docker compose run --rm web sh -c 'django-admin startproject myproject .'
django
 ├─web
 |  ├─myproject
 |  |  └─settings.py
 |  └─manage.py
 ├─db
 ├─Dockerfile
 └─compose.yaml

③データベースの設定を変更

使用するデータベースをデフォルトのSQLiteからPostgreSQLに変更するため、以下の内容でDjangoプロジェクトの設定ファイル「settings.py」を修正します。
※「DATABASES」の記述内容を以下の内容に変更。

PowerShell
code web/myproject/settings.py
django/web/myproject/settings.py
DATABASES = {
    'default': {
       'ENGINE': 'django.db.backends.postgresql',
       'NAME': 'testdb',
       'USER': 'testuser',
       'PASSWORD': 'testpass',
       'HOST': 'db',
       'PORT': 5432
    }
}

④コンテナを起動

以下のコマンドを実行して、コンテナを起動します。

PowerShell
docker compose up -d

⑤Djangoのデフォルトページを確認

Webブラウザでhttp://localhost:8000に接続して、Djangoのデフォルトのページが表示されることを確認します。

⑥アプリ作成を作成

以下のコマンドを実行して、helloWorldアプリを作成します。

PowerShell
docker compose exec web sh -c 'python manage.py startapp helloWorld'

⑦Viewを変更

helloWorldのView「views.py」を、以下の内容に変更します。

PowerShell
code web/helloWorld/views.py
django/web/helloWorld/views.py
from django.http import HttpResponse
def index(request):
  return HttpResponse("<h1 style='text-align:center;'>Hello World Django on Docker!</h1>")

⑧ルーティング設定を変更

helloWorldのルーティング設定「urls.py」を作成します。

PowerShell
New-Item web/helloWorld/urls.py; `
code web/helloWorld/urls.py
django/web/helloWorld/urls.py
from django.urls import path
from .           import views
urlpatterns = [
    path("", views.index, name="index"),
]

Djangoプロジェクト(myproject)のルーティング設定「urls.py」を変更します。

PowerShell
code web/myproject/urls.py
django/web/myproject/urls.py
from django.contrib import admin
from django.urls    import include,path
urlpatterns = [
    path("helloWorld", include("helloWorld.urls")),
    path('admin/', admin.site.urls),
]

⑨Hello Worldを確認

http://localhost:8000/helloWorldに接続してHello Worldが表示されれば完成です。

Discussion