【プログラミング】【Python】Djangoの概要と実装方式 - j-komatsu/myCheatSheet GitHub Wiki
DjangoはPython製のWebアプリケーションフレームワークで、MVCアーキテクチャに基づいて構築されています。
特に大規模アプリケーションの開発を効率的に行うために設計されており、「DRY(Don't Repeat Yourself)」と「CoC(Convention over Configuration)」を重視しています。
特徴 | 説明 |
---|---|
Pythonベース | シンプルで読みやすいPythonを活用したフレームワーク |
MTVモデル | DjangoはMVCの概念をベースにしつつ、Model-Template-View (MTV) を採用 |
ORM搭載 | データベース操作をオブジェクト指向的に行える(SQLを書かなくても良い) |
管理画面 | 標準で管理画面(Admin Site)が用意されている |
セキュリティ | CSRF対策・XSS対策・SQLインジェクション対策などが標準搭載 |
スケーラビリティ | 大規模システムでも活用可能な設計 |
豊富な拡張機能 | REST APIを提供するDjango REST frameworkなど多くのライブラリがある |
比較項目 | Django (Python) | Java (Spring) |
---|---|---|
言語 | 動的型 (Python) | 静的型 (Java) |
フレームワーク構造 | MTV (Model-Template-View) | MVC (Model-View-Controller) |
ORM | Django ORM | Hibernate (JPA) |
開発速度 | 高速 | やや時間がかかる |
運用コスト | 比較的低コスト | 高コストになりがち |
学習コスト | 比較的低い | 高め |
スケーラビリティ | 高い | 高い |
主な用途 | Webアプリ開発・API | 大規模システム・エンタープライズ開発 |
Djangoは MTV(Model-Template-View) を採用しています。
graph TD;
User -->|リクエスト| URLResolver
URLResolver -->|URL解析| View
View -->|処理| Model
Model -->|DBアクセス| Database
View -->|データ整形| Template
Template -->|HTML生成| Response
Response -->|レスポンス| User
レイヤー | 役割 |
---|---|
Model | データベースとのやり取り(Django ORM) |
View | ビジネスロジックを担当 |
Template | HTMLの表示を担当 |
URLResolver | URLとViewのマッピングを担当 |
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
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()
ビュー(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})
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>
Djangoの urls.py
でURLとビューの対応を定義します。
from django.urls import path
from .views import book_list
urlpatterns = [
path('books/', book_list, name='book_list'),
]
以下のようなディレクトリ構成で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
- DjangoはPython製のWebフレームワークで、MTVモデル を採用している
- Java(Spring)と比較すると開発速度が速く、学習コストが低い
- ORMを使うことでSQLを意識せずにデータを扱える
- テンプレート・ビュー・URLルーティングの仕組みを理解することが重要
- 公式ドキュメントやサンプルを活用して学習を進めると良い