DEV Community

カエデ
カエデ

Posted on

Docker Compose で Django Tutorial の HttpResponse を確認する

前提条件

https://dev.to/kaede_io/docker-compose-pullde-django-to-postgres-wochi-tutekuruhurowofen-jie-suru-9fo

Image description

前回の記事で docker-compose up で postgres と Django は動かせている状態。

https://docs.djangoproject.com/en/3.2/intro/tutorial01/

ここから公式の投票アプリを作る Tutorial をやる。views を作る。

環境構築

環境構築はローカルでは失敗した。

Docker compose では成功している

poll アプリを作る

python manage.py startapp polls
Enter fullscreen mode Exit fullscreen mode

このまま動かすわけにはいかない。

https://teratail.com/questions/275283#reply-392502

このページの回答によると

docker-compose run web python manage.py startapp blog
Enter fullscreen mode Exit fullscreen mode

これで compose を使って動かせるらしい

version: "3.9"

services:
  db:
    image: postgres:12
    restart: always
    volumes:
      - ./data/db:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:7000
    volumes:
      - .:/code
    ports:
      - "7000:7000"
    depends_on:
      - db
Enter fullscreen mode Exit fullscreen mode

この compose ファイルの web を使い

docker-compose run web python manage.py startapp polls
Enter fullscreen mode Exit fullscreen mode

polls を作る

docker-compose run web python manage.py startapp polls

[+] Running 1/0
 ⠿ Container dockerdjango-db-1  Running   
Enter fullscreen mode Exit fullscreen mode

Image description

これで polls アプリが作られた

polls の中身の urls と view を書く。

polls/urls, view,

polls/urls.py

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]
Enter fullscreen mode Exit fullscreen mode

polls/views.py

from django.shortcuts import render

# Create your views here.
from django.http import HttpResponse


def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")
Enter fullscreen mode Exit fullscreen mode

../urls.py

(これは polls アプリの一つ上のルーティングファイル)

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

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]
Enter fullscreen mode Exit fullscreen mode

これらを書くと

Image description

こうして ~/polls/polls/views.py の HttpResponse を表示できる!!

Discussion (0)