【プログラミング】【Python】Djangoの概要と実装方式 - j-komatsu/myCheatSheet GitHub Wiki

Djangoの概要と実装方式

1. Djangoとは?

DjangoはPython製のWebアプリケーションフレームワークで、MVCアーキテクチャに基づいて構築されています。
特に大規模アプリケーションの開発を効率的に行うために設計されており、「DRY(Don't Repeat Yourself)」と「CoC(Convention over Configuration)」を重視しています。


2. Djangoの特徴

特徴 説明
Pythonベース シンプルで読みやすいPythonを活用したフレームワーク
MTVモデル DjangoはMVCの概念をベースにしつつ、Model-Template-View (MTV) を採用
ORM搭載 データベース操作をオブジェクト指向的に行える(SQLを書かなくても良い)
管理画面 標準で管理画面(Admin Site)が用意されている
セキュリティ CSRF対策・XSS対策・SQLインジェクション対策などが標準搭載
スケーラビリティ 大規模システムでも活用可能な設計
豊富な拡張機能 REST APIを提供するDjango REST frameworkなど多くのライブラリがある

3. DjangoとJavaの比較

比較項目 Django (Python) Java (Spring)
言語 動的型 (Python) 静的型 (Java)
フレームワーク構造 MTV (Model-Template-View) MVC (Model-View-Controller)
ORM Django ORM Hibernate (JPA)
開発速度 高速 やや時間がかかる
運用コスト 比較的低コスト 高コストになりがち
学習コスト 比較的低い 高め
スケーラビリティ 高い 高い
主な用途 Webアプリ開発・API 大規模システム・エンタープライズ開発

4. Djangoのアーキテクチャ(MTVモデル)

Djangoは MTV(Model-Template-View) を採用しています。

graph TD;
  User -->|リクエスト| URLResolver
  URLResolver -->|URL解析| View
  View -->|処理| Model
  Model -->|DBアクセス| Database
  View -->|データ整形| Template
  Template -->|HTML生成| Response
  Response -->|レスポンス| User
Loading
レイヤー 役割
Model データベースとのやり取り(Django ORM)
View ビジネスロジックを担当
Template HTMLの表示を担当
URLResolver URLとViewのマッピングを担当

5. よく使う関数とその例

(1) モデルの定義

Djangoのモデルは models.Model を継承して定義します。

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=200)
    author = models.CharField(max_length=100)
    published_date = models.DateField()
    
    def __str__(self):
        return self.title

(2) データの取得・登録

ORMを利用することでSQLを書かずにデータを扱えます。

# データの作成
book = Book.objects.create(title="Django入門", author="山田太郎", published_date="2025-01-01")

# データの取得
books = Book.objects.all()

# フィルタリング
book = Book.objects.filter(title="Django入門").first()

(3) ビューの作成

ビュー(View)はリクエストを受け取って処理を行う関数です。

from django.shortcuts import render
from .models import Book

def book_list(request):
    books = Book.objects.all()
    return render(request, "book_list.html", {"books": books})

(4) テンプレートの作成

Djangoのテンプレートでは {% %}{{ }} を使用します。

<!-- book_list.html -->
<!DOCTYPE html>
<html>
<head>
    <title>Book List</title>
</head>
<body>
    <h1>書籍一覧</h1>
    <ul>
        {% for book in books %}
            <li>{{ book.title }} - {{ book.author }} ({{ book.published_date }})</li>
        {% endfor %}
    </ul>
</body>
</html>

(5) URLルーティング

Djangoの urls.py でURLとビューの対応を定義します。

from django.urls import path
from .views import book_list

urlpatterns = [
    path('books/', book_list, name='book_list'),
]

6. Djangoを使った簡単なWebアプリの構成

以下のようなディレクトリ構成でDjangoプロジェクトを構築できます。

myproject/
├── manage.py
├── myapp/
│   ├── models.py
│   ├── views.py
│   ├── templates/
│   │   └── book_list.html
│   ├── urls.py
│   └── admin.py
├── myproject/
│   ├── settings.py
│   ├── urls.py
│   ├── wsgi.py
│   └── asgi.py

7. まとめ

  • DjangoはPython製のWebフレームワークで、MTVモデル を採用している
  • Java(Spring)と比較すると開発速度が速く、学習コストが低い
  • ORMを使うことでSQLを意識せずにデータを扱える
  • テンプレート・ビュー・URLルーティングの仕組みを理解することが重要
  • 公式ドキュメントやサンプルを活用して学習を進めると良い
⚠️ **GitHub.com Fallback** ⚠️