🐂
【Hello World④】Django @ Python(runserver編)
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