Djangoブログプロジェクト
この章では、ゼロからDjangoを使ってブログプロジェクトを作成し、プロジェクト構造とリクエストのライフサイクルを理解します。
環境準備
DjangoはPython Webフレームワークです。まずPython環境を確認する必要があります。
ターミナルを開き、Pythonのバージョン(3.8以上が必要)を確認します:
$ python3 --version Python 3.12.0
仮想環境の作成とDjangoのインストール
仮想環境はPythonプロジェクトの標準的なプラクティスであり、各プロジェクトが独立した依存関係を持ち、互いに干渉しません。
$ python3 -m venv venv # 创建虚拟环境 $ source venv/bin/activate # 激活虚拟环境(Windows:venv\Scripts\activate) (venv) $ pip install django # 在虚拟环境中安装 Django
インストールが成功したか確認します:
(venv) $ python -m django --version 5.0
新しいターミナルを開くたびに、まず実行する必要があります
source venv/bin/activate仮想環境をアクティブにします。ターミナルのプロンプトの前にある(venv)は、現在仮想環境にいることを示します。
Djangoプロジェクトの作成
Djangoはdjango-admin startprojectコマンドでプロジェクトを初期化します。
(venv) $ django-admin startproject blog_project (venv) $ cd blog_project
実行後、以下のディレクトリ構造が生成されます:
blog_project/ ├── manage.py # 项目管理入口(启动服务器、执行迁移、创建 admin 等) ├── blog_project/ # 项目配置包 │ ├── __init__.py # 标识这是一个 Python 包 │ ├── settings.py # 全局配置(数据库、中间件、模板、静态文件等) │ ├── urls.py # 根 URL 路由表 │ ├── wsgi.py # WSGI 部署入口(生产环境用) │ └── asgi.py # ASGI 部署入口(WebSocket 用)
開発サーバーの起動
(venv) $ python manage.py runserver Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). Starting development server at http://127.0.0.1:8000/
ブラウザで http://127.0.0.1:8000/ にアクセスし、Djangoのウェルカムページが表示されれば起動成功です。
開発サーバーにはホットリロード機能が付いています:コードを変更して保存すると、サーバーが自動的に再起動します。Ctrl+Cでサーバーを停止します。
settings.pyの主要設定説明
settings.pyはDjangoプロジェクトの中心的な設定ファイルであり、各設定項目には明確な意味があります。
| 設定項目 | デフォルト値 | 役割 |
|---|---|---|
| DEBUG | True | 開発モード(本番公開後はFalseに設定する必要があります) |
| DATABASES | SQLite | データベース設定(デフォルトはSQLite、追加インストール不要) |
| INSTALLED_APPS | 組み込みアプリの一覧 | プロジェクトに登録されているアプリ |
| TEMPLATES | DjangoTemplates | テンプレートエンジンの設定 |
| LANGUAGE_CODE | 'en-us' | 言語('zh-hans'に変更可能) |
| TIME_ZONE | 'UTC' | タイムゾーン('Asia/Shanghai'に変更可能) |
言語とタイムゾーンを中国語環境に変更します:
例
LANGUAGE_CODE = 'zh-hans' # 管理画面を中国語で表示
TIME_ZONE = 'Asia/Shanghai' # タイムゾーンを北京時間に設定
最初のアプリを作成する:blog
Djangoのプロジェクト構成方式はプロジェクト(Project)が複数のアプリ(App)を含む。
各Appは独立した機能モジュール(例:ブログ、ユーザー、コメント)を担当します。
(venv) $ python manage.py startapp blog
実行後、blog/ ディレクトリが生成されます:
blog/ ├── __init__.py ├── admin.py # 后台管理配置(第三章用到) ├── apps.py # 应用配置 ├── models.py # 数据库模型(第二章用到) ├── views.py # 视图函数(本章用到) ├── urls.py # 需要手动创建(应用级路由) └── migrations/ # 数据库迁移文件(第二章用到)
Appを作成した後、settings.pyで登録する必要があります:
例
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog', # 追加:blogアプリを登録
]
Djangoリクエストのライフサイクル
リクエストがDjango内で処理される流れを理解すると、後で問題を迅速に特定するのに役立ちます。
ブラウザでURLを入力 → urls.pyがルートを照合 → views.pyがロジックを処理 → templatesがHTMLをレンダリング → ブラウザに返却。
この3ステップ(URL → View → Template)はDjango開発の骨格となるパターンです。

実践:最初のDjangoページ
ステップ1:ビュー関数を作成する(views.py)
例
from django.shortcuts import render
# ビュー関数:requestを受け取り、responseを返す
def index(request):
# renderの役割:request + テンプレート + データを組み合わせ、HTMLレスポンスを返す
return render(request, 'blog/index.html', {
'welcome': 'サンプルブログへようこそ',
'intro': 'これはDjangoで構築された個人ブログ紹介サイトです。'
})
ステップ2:テンプレートファイルを作成する(templates)
blog/ ディレクトリの下にtemplates/blog/サブディレクトリを作成し、次にindex.html。
例
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>サンプルブログ</title>
<style>
body { font-family: sans-serif; max-width: 800px; margin: 0 auto; padding: 40px 20px; }
h1 { color: #2c3e50; }
</style>
</head>
<body>
<h1>{{ welcome }}</h1>
<p>{{ intro }}</p>
</body>
</html>
Djangoのテンプレート変数は
{{ 変数名 }}構文を使用し、Vue3の補間式と同じです。views.pyでrenderに渡した辞書データは、テンプレート内で直接使用できます。
ステップ3:ルーティングを設定する(urls.py)
まず blog/ の下にurls.pyをアプリレベルルーティングとして作成します。
例
from django.urls import path
from . import views
# アプリのルーティングテーブル
urlpatterns = [
path('', views.index, name='index'), # 空のパスは / ホームページに一致
]
次にプロジェクトレベルのurls.pyでinclude()を使用してアプリのルーティングを組み込みます:
例
from django.contrib import admin
from django.urls import path, include # includeをインポート
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')), # blogアプリのルーティングをルートパスに接続
]
本章のまとめ
この章では3つのことを達成しました:仮想環境の作成とDjangoのインストール、startproject/startappによるプロジェクトの初期化、View → Template → URLの完全な流れの作成です。
主な収穫:Djangoのプロジェクト/アプリの階層構造を理解し、URL → View → Templateの3ステップ開発パターンを習得しました。
その他の拡張