新規プロジェクトの作成完全ガイド
新規プロジェクトの作成完全ガイド
Section titled “新規プロジェクトの作成完全ガイド”Djangoプロジェクトの作成から、実務で使えるプロジェクト構成まで詳しく解説します。
1. プロジェクトの作成
Section titled “1. プロジェクトの作成”基本的なプロジェクト作成
Section titled “基本的なプロジェクト作成”# プロジェクトの作成django-admin startproject mysite現在のディレクトリに作成
Section titled “現在のディレクトリに作成”# 現在のディレクトリにプロジェクトを作成django-admin startproject mysite .プロジェクト構造
Section titled “プロジェクト構造”mysite/├── manage.py└── mysite/ ├── __init__.py ├── asgi.py ├── settings.py ├── urls.py └── wsgi.py2. 各ファイルの役割
Section titled “2. 各ファイルの役割”manage.py
Section titled “manage.py”#!/usr/bin/env python"""Django's command-line utility for administrative tasks."""import osimport 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
Section titled “settings.py”# settings.pyの主要設定from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent
# セキュリティ設定SECRET_KEY = 'django-insecure-...'DEBUG = TrueALLOWED_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 = TrueUSE_TZ = True
# 静的ファイル設定STATIC_URL = 'static/'
# デフォルトの主キーフィールドDEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'urls.py
Section titled “urls.py”from django.contrib import adminfrom django.urls import path, include
urlpatterns = [ path('admin/', admin.site.urls), path('api/', include('api.urls')), path('', include('blog.urls')),]wsgi.py
Section titled “wsgi.py”import osfrom django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')application = get_wsgi_application()用途:
- 本番環境でのデプロイ(Gunicorn、uWSGIなど)
asgi.py
Section titled “asgi.py”import osfrom django.core.asgi import get_asgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')application = get_asgi_application()用途:
- WebSocket対応
- 非同期処理
- Django Channels
3. アプリケーションの作成
Section titled “3. アプリケーションの作成”アプリケーションの作成
Section titled “アプリケーションの作成”# アプリケーションの作成python manage.py startapp blogアプリケーション構造
Section titled “アプリケーション構造”blog/├── __init__.py├── admin.py├── apps.py├── models.py├── tests.py├── views.py└── migrations/ └── __init__.pyアプリケーションの登録
Section titled “アプリケーションの登録”INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'blog', # 作成したアプリケーションを追加]4. 実務でのプロジェクト構成
Section titled “4. 実務でのプロジェクト構成”推奨されるプロジェクト構造
Section titled “推奨されるプロジェクト構造”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設定ファイルの分割
Section titled “設定ファイルの分割”from .base import *
# 環境に応じて設定を読み込むimport osenv = os.environ.get('DJANGO_ENV', 'development')
if env == 'production': from .production import *else: from .development import *アプリケーションの整理
Section titled “アプリケーションの整理”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',]5. URLルーティングの設定
Section titled “5. URLルーティングの設定”プロジェクトレベルのURL設定
Section titled “プロジェクトレベルのURL設定”from django.contrib import adminfrom django.urls import path, includefrom django.conf import settingsfrom 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設定”from django.urls import pathfrom . 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'),]6. よくある問題と解決策
Section titled “6. よくある問題と解決策”問題1: アプリケーションが認識されない
Section titled “問題1: アプリケーションが認識されない”原因:
INSTALLED_APPSに追加されていない- アプリケーションのパスが間違っている
解決策:
INSTALLED_APPS = [ # ... 'apps.blog', # 正しいパスで追加]問題2: 静的ファイルが表示されない
Section titled “問題2: 静的ファイルが表示されない”原因:
STATIC_URLが正しく設定されていないcollectstaticが実行されていない
解決策:
# 静的ファイルの収集python manage.py collectstatic
# 開発環境での確認python manage.py runserverこれで、Djangoプロジェクトの作成と構成の基礎知識と実務での使い方を理解できるようになりました。