Skip to content

新規プロジェクトの作成完全ガイド

新規プロジェクトの作成完全ガイド

Section titled “新規プロジェクトの作成完全ガイド”

Djangoプロジェクトの作成から、実務で使えるプロジェクト構成まで詳しく解説します。

Terminal window
# プロジェクトの作成
django-admin startproject mysite
Terminal window
# 現在のディレクトリにプロジェクトを作成
django-admin startproject mysite .
mysite/
├── manage.py
└── mysite/
├── __init__.py
├── asgi.py
├── settings.py
├── urls.py
└── wsgi.py
#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys
def main():
"""Run administrative tasks."""
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)
if __name__ == '__main__':
main()

主な機能:

  • 開発サーバーの起動: python manage.py runserver
  • マイグレーション: python manage.py migrate
  • アプリケーションの作成: python manage.py startapp
  • スーパーユーザーの作成: python manage.py createsuperuser
# settings.pyの主要設定
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent
# セキュリティ設定
SECRET_KEY = 'django-insecure-...'
DEBUG = True
ALLOWED_HOSTS = []
# アプリケーション設定
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
# ミドルウェア設定
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
# URL設定
ROOT_URLCONF = 'mysite.urls'
# データベース設定
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
# 国際化設定
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_TZ = True
# 静的ファイル設定
STATIC_URL = 'static/'
# デフォルトの主キーフィールド
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
mysite/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include('api.urls')),
path('', include('blog.urls')),
]
mysite/wsgi.py
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
application = get_wsgi_application()

用途:

  • 本番環境でのデプロイ(Gunicorn、uWSGIなど)
mysite/asgi.py
import os
from django.core.asgi import get_asgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
application = get_asgi_application()

用途:

  • WebSocket対応
  • 非同期処理
  • Django Channels
Terminal window
# アプリケーションの作成
python manage.py startapp blog
blog/
├── __init__.py
├── admin.py
├── apps.py
├── models.py
├── tests.py
├── views.py
└── migrations/
└── __init__.py
settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog', # 作成したアプリケーションを追加
]
myproject/
├── manage.py
├── requirements/
│ ├── base.txt
│ ├── dev.txt
│ └── prod.txt
├── .env
├── .gitignore
├── README.md
├── myproject/
│ ├── __init__.py
│ ├── settings/
│ │ ├── __init__.py
│ │ ├── base.py
│ │ ├── development.py
│ │ └── production.py
│ ├── urls.py
│ ├── wsgi.py
│ └── asgi.py
├── apps/
│ ├── accounts/
│ │ ├── __init__.py
│ │ ├── models.py
│ │ ├── views.py
│ │ ├── urls.py
│ │ └── admin.py
│ ├── blog/
│ │ ├── __init__.py
│ │ ├── models.py
│ │ ├── views.py
│ │ ├── urls.py
│ │ └── admin.py
│ └── api/
│ ├── __init__.py
│ ├── views.py
│ ├── urls.py
│ └── serializers.py
├── static/
│ ├── css/
│ ├── js/
│ └── images/
├── media/
├── templates/
│ ├── base.html
│ ├── accounts/
│ └── blog/
└── tests/
├── __init__.py
├── test_models.py
├── test_views.py
└── test_api.py
settings/__init__.py
from .base import *
# 環境に応じて設定を読み込む
import os
env = os.environ.get('DJANGO_ENV', 'development')
if env == 'production':
from .production import *
else:
from .development import *
settings/base.py
INSTALLED_APPS = [
# Django標準アプリ
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# サードパーティアプリ
'rest_framework',
'corsheaders',
# ローカルアプリ
'apps.accounts',
'apps.blog',
'apps.api',
]
myproject/urls.py
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('api/v1/', include('apps.api.urls')),
path('accounts/', include('apps.accounts.urls')),
path('', include('apps.blog.urls')),
]
# 開発環境でのメディアファイル配信
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

アプリケーションレベルのURL設定

Section titled “アプリケーションレベルのURL設定”
apps/blog/urls.py
from django.urls import path
from . import views
app_name = 'blog'
urlpatterns = [
path('', views.PostListView.as_view(), name='post_list'),
path('<int:pk>/', views.PostDetailView.as_view(), name='post_detail'),
path('create/', views.PostCreateView.as_view(), name='post_create'),
path('<int:pk>/update/', views.PostUpdateView.as_view(), name='post_update'),
path('<int:pk>/delete/', views.PostDeleteView.as_view(), name='post_delete'),
]

問題1: アプリケーションが認識されない

Section titled “問題1: アプリケーションが認識されない”

原因:

  • INSTALLED_APPSに追加されていない
  • アプリケーションのパスが間違っている

解決策:

settings.py
INSTALLED_APPS = [
# ...
'apps.blog', # 正しいパスで追加
]

問題2: 静的ファイルが表示されない

Section titled “問題2: 静的ファイルが表示されない”

原因:

  • STATIC_URLが正しく設定されていない
  • collectstaticが実行されていない

解決策:

Terminal window
# 静的ファイルの収集
python manage.py collectstatic
# 開発環境での確認
python manage.py runserver

これで、Djangoプロジェクトの作成と構成の基礎知識と実務での使い方を理解できるようになりました。