3.

Django プロジェクトの作成方法(Windows)|startproject と仮想環境

編集
この記事の要点
  • 作成コマンドは django-admin startproject 名前 .。末尾のドットの有無でフォルダ構成が変わる
  • 先に仮想環境を作って有効化する。(.venv) が付いていない状態で入れない
  • PowerShell で有効化できないときは Set-ExecutionPolicy -Scope Process RemoteSigned
  • プロジェクト名にハイフンと予約語は使えないmy-sitedjango は不可)
  • 作成直後に python manage.py runserver でロケットの画面が出れば成功

前提

Python と Django が入っていることが前提です。まだの場合は Python3 のインストール (Windows10)インストール方法(Windows) を先に済ませてください。

python --version
Python 3.12.6

1. フォルダと仮想環境を作る

cd C:\work
mkdir mysite
cd mysite

python -m venv .venv
.venv\Scripts\activate

成功するとプロンプトの先頭に (.venv) が付きます。

(.venv) C:\work\mysite>
シェル有効化コマンド
コマンドプロンプト.venv\Scripts\activate.bat
PowerShell.venv\Scripts\Activate.ps1
Git Bashsource .venv/Scripts/activate

PowerShell で このシステムではスクリプトの実行が無効になっているため と出た場合は、そのウィンドウだけ許可します。

Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned

2. Django を入れる

python -m pip install --upgrade pip
python -m pip install django

python -m django --version
5.1.1

pip ではなく python -m pip と書くと、いま有効な Python に確実に入ります。複数バージョンが入っている環境での取り違えを防げます。

3. プロジェクトを作る

django-admin startproject config .

末尾のドットが重要です。付けるかどうかで出来上がる階層が変わります。

コマンドできるもの
django-admin startproject config .いまのフォルダ直下に manage.pyconfig/
django-admin startproject configconfig/manage.pyconfig/config/同名が二重になる)

ドットを付けた場合の構成です。

C:\work\mysite\
├─ .venv\
├─ manage.py           ← すべての操作の入口
└─ config\
   ├─ __init__.py
   ├─ settings.py      ← 設定
   ├─ urls.py          ← ルーティング
   ├─ asgi.py
   └─ wsgi.py

プロジェクト名を config にしておくと、後からサイト名を変えても import 文を書き換えずに済みますmysite のようにサービス名を付ける流儀もありますが、アプリ名と紛れやすくなります。

使えない名前

  • ハイフンを含む名前(my-site)— Python の識別子として不正
  • 数字で始まる名前(2nd
  • Python の予約語(class import test など)
  • 既存モジュールと同じ名前(django site json)— import が衝突する

4. 初期化して起動する

python manage.py migrate
python manage.py runserver
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

ブラウザで http://127.0.0.1:8000/ を開き、ロケットのイラストと The install worked successfully! が出れば完了です。停止は Ctrl + C です。

migrate を実行すると db.sqlite3 が作られ、管理画面やセッションに必要なテーブルが用意されます。飛ばすと You have 18 unapplied migration(s) という警告が出ます。

5. 日本語向けの設定

# config/settings.py
LANGUAGE_CODE = "ja"
TIME_ZONE = "Asia/Tokyo"
USE_I18N = True
USE_TZ = True                    # DB には UTC で保存し、表示時に変換する

USE_TZ = True のまま運用するのが推奨です。datetime.now() ではなく django.utils.timezone.now() を使ってください。

6. 次にやること

python manage.py startapp myapp        アプリを作る
python manage.py createsuperuser       管理者を作る
python -m pip freeze > requirements.txt  依存を固定する

プロジェクトは器で、実際の機能はアプリとして作ります。作成後は settings.pyINSTALLED_APPS への追加を忘れないでください(アプリケーションの作成方法)。

つまずいたとき

症状対処
django-admin は認識されていません仮想環境が有効になっていない。python -m django startproject ... でも可
スクリプトの実行が無効Set-ExecutionPolicy -Scope Process RemoteSigned
Error: That port is already in use.python manage.py runserver 8001 でポートを変える
文字化けするコマンドプロンプトで chcp 65001 を実行して UTF-8 にする
パスに日本語や空白がある不具合の原因になりやすい。C:\work のような英数字のパスに置く
ModuleNotFoundError: No module named 'django'別の Python で実行している。python -c "import sys; print(sys.executable)" で確認

生成されたファイルの役割

ファイル役割編集頻度
manage.pyコマンドの入口(runserver migrate など)触らない
config/settings.pyDB・アプリ一覧・テンプレート・静的ファイルの設定よく編集する
config/urls.pyURL とビューの対応よく編集する
config/wsgi.py本番で Web サーバーとつなぐ入口デプロイ時のみ
config/asgi.py非同期・WebSocket 用の入口必要になったら
config/__init__.pyパッケージであることを示す空ファイル触らない

settings.py で最初に見るところ

SECRET_KEY = "django-insecure-..."   # 本番では環境変数から読む
DEBUG = True                          # 本番では必ず False
ALLOWED_HOSTS = []                    # DEBUG=False にしたら必須

INSTALLED_APPS = [
    "django.contrib.admin",
    ...
    "myapp",                          # 作ったアプリはここに足す
]

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.sqlite3",
        "NAME": BASE_DIR / "db.sqlite3",
    }
}

STATIC_URL = "static/"

SECRET_KEY をリポジトリに入れないでください。セッションやパスワードリセットの署名に使われるため、漏れるとログインを偽装される可能性があります。

import os

SECRET_KEY = os.environ["DJANGO_SECRET_KEY"]
DEBUG = os.environ.get("DJANGO_DEBUG", "") == "1"
ALLOWED_HOSTS = os.environ.get("DJANGO_HOSTS", "127.0.0.1").split(",")

Git 管理に入れないもの

# .gitignore
.venv/
__pycache__/
*.pyc
db.sqlite3
.env
/media/
/staticfiles/

仮想環境のフォルダはサイズが大きく、OS ごとに中身が違うため共有しても意味がありません。共有するのは requirements.txt だけにします。詳細は git管理 を参照してください。

関連

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. インストール方法(Windows)
  2. インストール方法(Linux/Mac)
  3. プロジェクトの作成方法(Windows)
  4. プロジェクトの作成方法(Mac)
  5. アプリケーションの作成方法
  6. 開発用サーバー(Windows)
  7. 開発用サーバー(Mac)