1
0

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触ってみた

Last updated at Posted at 2025-02-25

はじめに

こんにちは、株式会社TechoesのKです(アプリエンジニア4年目)
今回はdjangoを使用してみたのでその導入方法についての記事となります

Djangoの概要

Djangoは、Pythonで開発された高機能なWebアプリケーションフレームワークです。オープンソースで提供されており、Web開発を迅速かつ効率的に行うことを目的としています。Djangoの開発は2005年に開始され、「The web framework for perfectionists with deadlines(締切に追われる完璧主義者のためのWebフレームワーク)」というスローガンを掲げており、現在も活発にメンテナンスが行われています。

フレームワークとしての特徴

Djangoは、以下のような特徴を持つフレームワークです。

1. MTVアーキテクチャ

Djangoは、Model(モデル)、Template(テンプレート)、View(ビュー)の3層構造を採用しています。

  • Model: データベースとのやり取りを管理し、オブジェクト指向的にデータを扱う。
  • Template: HTMLのテンプレートを作成し、動的なページを生成する。
  • View: ユーザーリクエストを処理し、適切なデータをテンプレートに渡す。

この構造により、コードの分離が容易になり、保守性の高いアプリケーションを開発できます。

2. 管理サイト(Admin Panel)

Djangoは、開発者がデータを簡単に管理できるように、標準で管理サイト(Django Admin)を提供しています。少ない設定でデータの追加・編集・削除を行う管理画面を自動生成できるため、バックエンドの管理が容易になります。

3. 組み込みの認証機能

Djangoは、ユーザー認証(ログイン、ログアウト、パスワード管理)を標準機能として提供しており、安全性の高い認証システムを容易に実装できます。

4. ORM(Object-Relational Mapping)

Djangoは、データベースとのやり取りを簡素化するためにORM(オブジェクト・リレーショナル・マッピング)を提供しています。SQLを直接書かずに、Pythonのオブジェクトとしてデータを操作できるため、開発の効率が向上します。



では早速、Djangoを導入してみましょう

Djangoを導入してみる


私の環境がMacのHomebrew上で管理されているPythonのため、仮想環境での導入手順となります

(※↓PCに直接Djangoをインストールする場合の手順はこちら)


1. 仮想環境を作成

python3 -m venv myenv

2. 仮想環境を有効化

source myenv/bin/activate

3. Django をインストール

pip install django

これで仮想環境上にDjangoをインストールできました
次に簡単なアプリケーションの作成に移っていきます

実際にDjangoでアプリケーションを作成してみる


1. Django プロジェクトを作成

django-admin startproject myproject

2. アプリを作成

cd myproject
python manage.py startapp myapp

ここまで終わったあとのフォルダの状態は以下の通り


スクリーンショット 2025-02-22 19.03.43.png


ここから、ファイル内のコードを設定していきます

アプリ (myapp) の views.py に簡単なレスポンスを返す関数を作成します。

3. ビューを定義

スクリーンショット 2025-02-22 19.07.44.png


お約束のレスポンスを返すよう設定

4. URLを設定

Django では、URL のルーティングを設定する必要があります。

そこで、myapp/urls.pyファイルを新規作成し、以下の設定を追加します


myapp/urls.py

スクリーンショット 2025-02-22 19.12.26.png


また、myproject/urls.pyに新たな設定を追加します

スクリーンショット 2025-02-22 19.18.12.png


URL のルーティングを設定しました
次はアプリをプロジェクトに登録します

5. アプリをプロジェクトに登録

アプリをプロジェクトに登録するため、myproject/settings.py内のINSTALLED_APPSセクションにmyappを追加します


myproject/settings.py

スクリーンショット 2025-02-22 19.23.36.png


これで下準備が整いました
いよいよ実際に動かしてみましょう

6. サーバーを起動

python manage.py runserver

上記コマンドでサーバーを起動し、http://127.0.0.1:8000/を開くと画面が表示されました!


スクリーンショット 2025-02-22 19.42.35.png


せっかくなので、ここでDjango特有のMVT (Model-View-Template) アーキテクチャ を活かした機能の実装をしてみましょう

MVTアーキテクチャ を活かした機能を実装してみる


今回はMVTアーキテクチャを活用したTodoリストを実装して見ようと思います
まずはモデルを作成します

1. モデルを作成

データベースに保存する ToDo リストのモデル を作成します。

myapp/models.py

from django.db import models

class Task(models.Model):
    title = models.CharField(max_length=200)  # タスク名
    completed = models.BooleanField(default=False)  # 完了フラグ
    created_at = models.DateTimeField(auto_now_add=True)  # 作成日時

    def __str__(self):
        return self.title

2. データベースに反映

モデルをデータベースに反映するため、マイグレーション

python manage.py makemigrations
python manage.py migrate

3. フォームの作成

タスクを追加できるフォームを作成します

myapp/forms.py(新規作成)

from django import forms
from .models import Task

class TaskForm(forms.ModelForm):
    class Meta:
        model = Task
        fields = ['title']  # ユーザーが入力できるのはタイトルのみ

4. viewの修正

「Hello Django!」を表示するようにしていたホームページをTodoリストに書き換えます
このとき、フォームからの入力を受け付けるようにします

myapp/view.py

from django.shortcuts import render, redirect
from .models import Task
from .forms import TaskForm

def task_list(request):
    tasks = Task.objects.all()  # 全タスクを取得
    form = TaskForm()

    if request.method == 'POST':
        form = TaskForm(request.POST)
        if form.is_valid():
            form.save()  # フォームの内容を保存
            return redirect('task_list')  # タスク追加後、同じページにリダイレクト

    return render(request, 'task_list.html', {'tasks': tasks, 'form': form})

5. URLの修正

urls.py を修正し、http://127.0.0.1:8000/ を ToDo リストページに上書き

myapp/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.task_list, name='task_list'),  # ホームページをToDoリストに
]

myproject/urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('myapp.urls')),  # ルートを myapp の task_list に
]

6. テンプレートの追加

最後に、HTML ファイルを作成してデータを表示する。

myapp/templates/task_list.html

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ToDoリスト</title>
</head>
<body>
    <h1>ToDoリスト</h1>

    <!-- タスク追加フォーム -->
    <form method="post">
        {% csrf_token %}
        {{ form.as_p }}  <!-- フォームの自動レンダリング -->
        <button type="submit">追加</button>
    </form>

    <h2>タスク一覧</h2>
    <ul>
        {% for task in tasks %}
            <li>
                {% if task.completed %}✅{% else %}❌{% endif %}
                {{ task.title }}
            </li>
        {% empty %}
            <li>タスクがありません</li>
        {% endfor %}
    </ul>
</body>
</html>

これで、準備完了です

python manage.py runserverコマンドで動作確認をしましょう


スクリーンショット 2025-02-24 13.53.54.png


Todoリストが表示されました
タスクもちゃんと追加することができます


スクリーンショット 2025-02-24 13.56.18.png


最後に、Djangoの管理画面について紹介して終わりたいと思います

Djangoの管理画面機能(おまけ)


Djangoでは管理画面を使いたい場合は、管理ユーザーを作成できます


マイグレーションを実行していない場合はマイグレーションを行なってください

python manage.py migrate

スクリーンショット 2025-02-22 20.09.31.png

manage.pyを編集せずにいきなりコマンドを実行すると、デフォルト設定でマイグレーションが行われます


マイグレーションが成功したら以下のコマンドで管理ユーザーを作成します

python manage.py createsuperuser

コマンドライン上でユーザー名・メールアドレス・パスワードを設定できます

スクリーンショット 2025-02-22 20.14.38.png


上記設定完了後、http://127.0.0.1:8000/adminを開くと管理ページのログイン画面が開きます

スクリーンショット 2025-02-22 20.17.18.png


設定したユーザー名・パスワードでログインすると管理画面が開きます

スクリーンショット 2025-02-22 20.20.09.png


管理画面ではデータベースのGUI確認・編集が可能となっています

スクリーンショット 2025-02-22 20.22.38.png

感想・まとめ

Djangoの紹介と、Django の MVT (Model-View-Template) アーキテクチャ を活かして、サイト内でタスクを追加 & 表示できる ToDo リスト を作成しました。

モデル (models.py) でデータを定義し、ビュー (views.py) で取得・処理、テンプレート (task_list.html) で表示する流れをシンプルに紹介できたのではないかと思います。

以上、Djangoについての記事でした!
この記事が皆さんの開発の一助になれば幸いです

1
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?