View on GitHub

バックエンド開発の準備

Home

バックエンド開発の準備

バックエンドのルートディレクトリの作成

$ mkdir -p ~/dev/recsys-full/src/backend/
$ cd ~/dev/recsys-full/src/backend/
backend$

データベースの準備

ここでは、データベースにアクセスするユーザ名をrsl、ログインするためのパスワードをrsl-passとしています。適宜、変更してください。

postgres=# CREATE DATABASE recsys_full ENCODING 'UTF8';
postgres=# CREATE ROLE rsl WITH LOGIN PASSWORD 'rsl-pass';
postgres=# \l
                                                           List of databases
       Name        |  Owner   | Encoding | Locale Provider |   Collate   |    Ctype    | ICU Locale | ICU Rules |   Access privileges   
-------------------+----------+----------+-----------------+-------------+-------------+------------+-----------+-----------------------
...(略)...
 recsys_full     | postgres | UTF8     | libc            | ja_JP.UTF-8 | ja_JP.UTF-8 |            |           | 
...(略)...
postgres=# ALTER DATABASE recsys_full OWNER TO rsl;
postgres=# \l
                                                           List of databases
       Name        |  Owner   | Encoding | Locale Provider |   Collate   |    Ctype    | ICU Locale | ICU Rules |   Access privileges   
-------------------+----------+----------+-----------------+-------------+-------------+------------+-----------+-----------------------
...(略)...
 recsys_full     | rsl      | UTF8     | libc            | ja_JP.UTF-8 | ja_JP.UTF-8 |            |           | 
...(略)...
postgres=# \c recsys_full
recsys_full=# \dt
Did not find any relations.

Djangoのインストール

(recsys_full) backend$ pip install django
(recsys_full) backend$ pip freeze
...(略)...
asgiref==3.8.1
Django==5.2
sqlparse==0.5.3
...(略)...

Djangoプロジェクトの作成

(recsys_full) backend$ django-admin startproject config .
(recsys_full) backend$ tree
.
├── config
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

2 directories, 6 files

VSCodeの起動

(recsys_full) backend$ code .

.gitignoreの設定

backend/.gitignore

__pycache__/
manage.py
config/settings/
migrations/

設定ファイル

(recsys_full) backend$ mkdir config/settings/
(recsys_full) backend$ mv config/settings.py config/settings/base.py
(recsys_full) backend$ echo 'from .base import *' > config/settings/development.py
(recsys_full) backend$ tree -a
.
├── .gitignore
├── config
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings
│   │   ├── base.py
│   │   └── development.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

3 directories, 8 files

backend/config/settings/development.py

from .base import *
import os

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'recsys_full',
        'USER': os.environ.get('DB_USER'),
        'PASSWORD': os.environ.get('DB_PASSWORD'),
        'HOST': '',
        'PORT': '',
    }
}

Djangoサーバの起動

(recsys_full) backend$ export DB_USER=rsl
(recsys_full) backend$ export DB_PASSWORD=rsl-pass
(recsys_full) backend$ python manage.py runserver --settings config.settings.development
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
April 03, 2025 - 04:03:06
Django version 5.2, using settings 'config.settings.development'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

ブラウザで、上記に記載されているURLにアクセスし、「The install worked successfully! Congratulations!」と表示されることを確認してください。

Djangoの設定

backend/config/settings/base.py

......
LANGUAGE_CODE = 'ja-jp'  # <- 修正
......
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

# ↓追加
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
        }
    },
    'loggers': {
        'django.db.backends': {
            'level': 'DEBUG',
            'handlers': ['console'],
        }
    }
}
# ↑追加

ブラウザで下記URLにアクセスし、日本語で「インストールは成功しました!おめでとうございます!」と表示されることを確認してください。

参考

  1. 株式会社オープントーン,佐藤大輔,伊東直喜,上野啓二,『実装で学ぶフルスタックWeb開発 エンジニアの視野と知識を広げる「一気通貫」型ハンズオン』,翔泳社,2023.
    • 3-3 バックエンド開発の準備