Django入門 - メモとかチュートリアル写経とか

Djangoを試してみたので、以下簡単にまとめ。

試してみたコードは、以下で公開しています。

※ 主に、Dockerコンテナの設定と公式ドキュメントのチュートリアル写経。

また、写経用に作成したDjango用のRemote Developmentテンプレートを以下のページで公開しています。

目次

写経

クィックスタート: Compose と Django

まずは、「Docker ドキュメント日本語化プロジェクト」の「クィックスタート: Compose と Django」を参考にDockerコンテナでDjango環境を構築してみました。

ドキュメント内容からの微調整

最新版(3.10.0)のpythonだとエラーが出て進まなかったので、python:3.9を使用。

dbコンテナが立ち上がらなかったので、docker-compose.ymlを以下のように調整しました。

  db:
    image: postgres
    environment:
      POSTGRES_USER: postgress
      POSTGRES_PASSWORD: example

postgresのユーザとパスワードを追加しています。

これに合わせて、settings.pyDATABASESにもパスワード項目を追加。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'PASSWORD': 'example',
        'HOST': 'db',
        'PORT': 5432,
    }
}

※ パスワードべた書きしていますが、トライアルということで勘弁してください(汗)

表示チェック

あとはリンク先ページに従って、docker-compose up -dで以下のように表示されれば構築完了 ↓

Quickstart: Compose and Django

Docker公式ドキュメント(本家・英語版)をチェックしたところ、こちらの方が最新のためか、postgressのパスワード設定とデータの永続化設定が追加されていました。

Djangoも最新バージョンのインストールになっています。

「Docker ドキュメント日本語化プロジェクト」からの調整

「Docker ドキュメント日本語化プロジェクト」からの変更点は以下の通り。

まず、再インストールのために生成されたcomposeexampleディレクトリとmanage.pyを削除。

docker-compose.ymlを以下のように置き換えます。

version: "3.9"
   
services:
  db:
    image: postgres
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

※ dbコンテナがうまく起動しなかったので、volumes設定を削除しています。

requirements.txtを以下のように置き換え。

Django>=3.0,<4.0
psycopg2-binary>=2.8

ファイルの調整が終わったら、以下のコマンドを実行。

docker-compose run web django-admin startproject composeexample .

composeexample/setting.pyのDATABASESを以下のように変更

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'PASSWORD': 'postgres',
        'HOST': 'db',
        'PORT': 5432,
    }
}

表示チェック

docker-compose up -dで以下のように表示されれば成功です。

Django用のRemote Developmentテンプレートを作成

このままだと、毎回、docker-compose exec webをコマンドにつける事になるので、ここまでの内容を元に、Django用のRemote Developmentテンプレートを作ってみました ↓

上記テンプレートを使用しない場合は、以降のトレースで出てくるコマンドの前にdocker-compose exec webを追加してください。

Django 公式ドキュメント チュートリアル

※ 以下、ドキュメントからの差分メモのみ記述

プロジェクトを作成する

※ Remote Developmentテンプレートを使わない場合は、作成済み (composeexample)

開発用サーバー

Remote Developmentテンプレートを使わない場合は

docker-compose.ymlのweb.commandフィールドで設定、docker-compose up -dで起動済み

起動ログを確認する場合はdocker-compose logs webで確認

背景画像を追加する

ドキュメントではgifの読み込みになっていますが、トレースコードでは背景色の変更だけにしました。

まとめ

「Docker公式ドキュメント」のDjango quickstartは、ほぼ写経でいけたので、お試し環境の作成にいい気がします。

「Django公式ドキュメント」のチュートリアルは、モデルの動作やビューの呼び出しの流れなどがわかりやすく解説されていて、スターターに良さげ。

あと、ドキュメント全体が最新版対応だろうと思われるので、安心感もあり、とっかかりにいいような気がします。

関連リンク

トレース済み

そのほか、気になるチュートリアル

そのうちやるかも?