1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🐍 Django入門ガイド!初心者が最高なWebアプリを作る方法✨

Posted at

こんにちは😊
株式会社プロドウガ@YushiYamamotoです!
らくらくサイトの開発・運営を担当しながら、React.js・Next.js専門のフリーランスエンジニアとしても活動しています❗️

DjangoはPythonで作るWebアプリケーションのフレームワークで、「完結型の開発環境」と呼ばれる特性を持ちます。初心者が一人でプロジェクトを進められるように設計されており、高品質なWebサービスを効率的に構築できる点が最大の強みです。この記事では、Djangoの基本概念から実践的な開発手法まで、エンジニアの視点で体系的に解説します。


Djangoの基本概念を理解しよう📚

DjangoはMTVアーキテクチャを採用しています。MVC(Model-View-Controller)とは異なり、**「Model(データモデル)」「Template(テンプレート)」「View(アプリケーションロジック)」**の3層構造で構成されます。

Djangoの主な特徴🚀

  1. バッテリー付きフレームワーク:認証システムや管理画面など、開発に必要な機能が標準で組み込まれている
  2. ORM(Object Relational Mapping):SQLを直接書かず、Pythonコードでデータベース操作が可能[^1]
  3. 再利用可能なコンポーネント:アプリケーション単位で機能をパッケージ化できる

開発環境の準備🛠️

まずは開発環境の構築から始めましょう。Djangoをインストールする前に、Pythonとpipのインストール確認が必要です。

# Pythonのバージョン確認
python3 --version

# Djangoのインストール
pip install django

Python 3.8以上が推奨されます。環境構築に迷った場合は、**VS Code拡張機能「Python Environment Manager」**を活用すると管理が容易です。


プロジェクトの作成📁

プロジェクトを作成するには、django-admin startprojectコマンドを使用します。

django-admin startproject myproject
cd myproject

プロジェクト構成の主要ディレクトリを解説します:

  1. myproject/:プロジェクト全体の設定ファイル
  2. myproject/settings.py:データベース接続や中間件設定
  3. myproject/urls.py:リクエストルーティングの設定

アプリケーションの作成🔧

Djangoでは機能単位でアプリケーションを作成します。

python manage.py startapp myapp

アプリケーションの登録

settings.pyのINSTALLED_APPSにアプリ名を追加します。

INSTALLED_APPS = [
    # ...
    'myapp',
]

データモデルを定義する📝

models.pyでデータ構造を設計します。

# myapp/models.py
from django.db import models

class Task(models.Model):
    title = models.CharField(max_length=100)
    created_at = models.DateTimeField(auto_now_add=True)
    done = models.BooleanField(default=False)

モデルの変更を反映するには、マイグレーションが必要です。

python manage.py makemigrations
python manage.py migrate

ビューとテンプレートの連携🔗

views.pyでビジネスロジックを実装します。

# myapp/views.py
from django.shortcuts import render
from .models import Task

def task_list(request):
    tasks = Task.objects.all()
    return render(request, 'myapp/task_list.html', {'tasks': tasks})

テンプレートファイルは**templates/myapp/**に配置します。

<!-- templates/myapp/task_list.html -->
{% extends 'base.html' %}
{% block content %}
  <h1>Task List</h1>
  <ul>
  {% for task in tasks %}
    <li>{{ task.title }} ({{ task.done }})</li>
  {% endfor %}
  </ul>
{% endblock %}

URLパターンの設定📍

urls.pyでルーティングを定義します。

# myproject/urls.py
from django.contrib import admin
from django.urls import path
from myapp import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('tasks/', views.task_list, name='task_list'),
]

開発サーバーの起動🚨

python manage.py runserver

ブラウザで http://localhost:8000/tasks/ にアクセスすると、タスク一覧が表示されます。


テスト駆動開発の実践✅

Djangoにはテストフレームワークが標準装備されています。

# myapp/tests.py
from django.test import TestCase
from .models import Task

class TaskTestCase(TestCase):
    def test_task_creation(self):
        task = Task.objects.create(title='Test task')
        self.assertEqual(task.title, 'Test task')

テスト実行コマンド:

python manage.py test

デプロイ戦略🚀

開発完了後は、HerokuやAWS Elastic BeanstalkなどのPaaSを使ったデプロイが一般的です。

# Git初期化
git init
git add .
git commit -m "Initial commit"

# Herokuアプリ作成
heroku create myapp
heroku git:remote -a myapp
git push heroku main

初心者が陥りがちな落とし穴⚠️

  1. マイグレーション忘れ:モデル変更後は必ずマイグレーションを実行
  2. 静的ファイル設定:settings.pyのSTATIC_URLを正しく設定
  3. 管理画面カスタマイズ:admin.pyでモデルを登録忘れる

Djangoの生態系🌍

Djangoのエコシステムは豊富で、Django REST Framework(API開発)、Wagtail(CMS)、django-allauth(認証機能)などが代表的です。


実践例:Todoリストアプリ📝

Todo Listアプリの実装例
# views.py
from django.shortcuts import redirect, render
from .forms import TodoForm
from .models import Todo

def todo_list(request):
    todos = Todo.objects.all()
    form = TodoForm()
    return render(request, 'todo/list.html', {'todos': todos, 'form': form})

def todo_add(request):
    if request.method == 'POST':
        form = TodoForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('todo_list')
    return render(request, 'todo/add.html', {'form': form})
<!-- templates/todo/list.html -->
{% extends 'base.html' %}
{% block content %}
  <h1>Todo List</h1>
  <form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">Add</button>
  </form>
  <ul>
  {% for todo in todos %}
    <li>{{ todo.title }} ({{ todo.done }})</li>
  {% endfor %}
  </ul>
{% endblock %}

最後に:業務委託のご相談を承ります

私は業務委託エンジニアとしてWEB制作やシステム開発を請け負っています。最新技術を活用したレスポンシブなWebサイト制作、インタラクティブなアプリケーション開発、API連携など幅広いご要望に対応可能です。

「課題解決に向けた即戦力が欲しい」「高品質なWeb制作を依頼したい」という方は、お気軽にご相談ください。一緒にビジネスの成長を目指しましょう!

👉 ポートフォリオ
🌳 らくらくサイト

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?