Django Webアプリの例:初心者でもわかる作り方と活用シーン

はじめに

DjangoはPythonで開発されたWebフレームワークです。 初心者でも比較的理解しやすい設計になっており、多くのプロジェクトで採用されています。 ただ、初めて触れるときは「そもそもフレームワークって何?」という疑問が浮かぶかもしれません。 ここでは、Djangoを使ったWebアプリの具体的な例や機能の概要を確認しながら、Web開発の基本を学んでいきましょう。

Djangoでは、プロジェクトの作成からアプリケーションの実装、テンプレートを使った画面表示までの流れを簡単に体験できます。 この流れを理解することで、初心者の方でも「こうやってページが表示されるんだな」と納得しながら実践できるでしょう。

この記事を読むとわかること

  • Djangoの概要と特徴
  • Webアプリ開発におけるDjangoの基本構造
  • Djangoプロジェクトを立ち上げる際の手順
  • 具体的なコード例を用いた実装方法
  • Djangoを活用するメリットや運用上の注意点

Djangoとは

Djangoは、PythonのコードでWebアプリを開発できるフレームワークです。 多くの企業サイトやサービスで採用されてきたことから、信頼できる選択肢の一つと言えるでしょう。

Djangoには、モデル、ビュー、テンプレートという役割分担が存在します。 この仕組みにより、データベース処理、画面の生成、ビジネスロジックといった部分が整理され、開発者にとって理解しやすくなっています。

また、Djangoは認証機能や管理画面、データベースとの連携といった便利な機能をあらかじめ用意しています。 「ユーザー管理やフォームのバリデーションを自分で一から用意するのは大変」と感じる方にとっても、大いに活用できる仕組みが備わっています。

Djangoの特徴

Djangoの大きな特徴の一つは開発に必要な機能が最初からまとまっている点です。 たとえば、URLのルーティング、データベース接続、認証周りの機能などが標準で含まれています。

また、管理画面が自動生成される仕組みがあることも便利なポイントです。 データベース上のテーブルと関連づけたモデルを定義しておけば、すぐに管理画面に反映できるのでテスト運用も楽になります。

他にも、テンプレートエンジンを使って画面のデザインとロジックを分離できることや、豊富なプラグイン(Djangoアプリ)の利用が可能な点も魅力です。 これらの特徴がそろっているおかげで、開発者は「コアの機能実装」に集中しやすいと言えます。

Djangoの基本構造

Djangoには、プロジェクトと呼ばれる大きな単位と、アプリケーションと呼ばれる機能単位があります。 プロジェクトはWebサイト全体を取りまとめる器、アプリケーションは各機能ごとのまとまりと考えるとイメージしやすいでしょう。

myproject/
  manage.py
  myproject/
    __init__.py
    settings.py
    urls.py
    wsgi.py
  myapp/
    __init__.py
    admin.py
    apps.py
    models.py
    views.py
    urls.py
    templates/
      ...
    static/
      ...

上記は一例ですが、Djangoプロジェクトではこのようなディレクトリ構成になります。 manage.py はDjangoプロジェクト全体をコマンドラインから管理するために使います。 settings.py はデータベースやアプリケーション設定など、Webアプリ全体の環境設定を行うところです。

models.py にデータベースとの連携用のクラスを定義し、views.py で受け取ったリクエストを処理します。 それらを urls.py でルーティングすれば、ブラウザからアクセスするときの動作を決められます。 このように役割が分かれているので、「どこに何を書けばいいのか」が明確になりやすいというメリットがあります。

Django Webアプリを作る流れ

ここでは、Djangoを使ったWebアプリの作成手順の一例を簡単に紹介します。 具体的には、メッセージを投稿できる簡単なアプリをイメージしながら進めていきましょう。

アプリの作成全体の流れは下記のようになります。

  1. プロジェクトの作成とアプリケーションの作成
  2. ルーティングとビューの実装
  3. モデルの作成とデータベース連携
  4. テンプレートで画面表示

プロジェクトとアプリの作成

Djangoをインストールしたら、まずはプロジェクトを立ち上げます。 コマンドラインで以下のように入力すると、新しいDjangoプロジェクトが作成されます。

django-admin startproject myproject
cd myproject
python manage.py startapp myapp

startproject でWebアプリ全体を管理する器となるプロジェクトが作成されます。 さらに startapp を使えば、具体的な機能を実装するためのアプリケーション(myapp)を追加できます。

次に、プロジェクトの settings.pymyapp を登録すると、アプリの機能がDjango全体で認識されるようになります。 以下は settings.py の一部を例示したものです。

INSTALLED_APPS = [
    # もともと入っているアプリ一覧
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    # 作成したアプリを登録
    'myapp',
]

ルーティングとビューの実装

続いて、URLへのアクセスがどの関数で処理されるかを指定します。 Djangoでは、プロジェクト配下の urls.py やアプリ内の urls.py でURLルーティングを管理できます。

まず、アプリ側の myapp/urls.py にアクセスURLとビュー関数の対応関係を定義します。 例として、トップページで投稿一覧を表示するようにしましょう。

# myapp/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

次に、プロジェクトの myproject/urls.py に、アプリのルーティングを取り込む設定を加えます。

# 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/urls.pyindex ビュー関数が呼び出されるようになります。

実際のビュー関数は views.py に記述します。 以下は投稿一覧を表示するための仮のコード例です。

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

def index(request):
    messages = ["こんにちは", "はじめまして"]
    context = {'messages': messages}
    return render(request, 'index.html', context)

ここでは、messages というサンプルのリストを作ってテンプレートへ渡しています。

モデルの作成とデータベース連携

動的な投稿を行うために、モデルを用意してデータベースに保存する仕組みを整えます。 モデルは models.py にクラスとして定義し、DjangoのORM(Object-Relational Mapping)を通じて扱います。

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

class Message(models.Model):
    text = models.CharField(max_length=200)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.text

ここでは Message というモデルを定義し、投稿内容(text)と投稿日時(created_at)を持つようにしました。 auto_now_add=True を使うことで、レコードが作成された日時が自動的に記録されます。

モデルを定義したら、データベースのテーブルを生成するためにマイグレーションを実行します。

python manage.py makemigrations
python manage.py migrate

こうしてテーブルが作成されたら、あとは投稿の作成、保存、取得などの処理をビューに書き込めばデータベースに反映されるようになります。

テンプレートで画面表示

ビュー関数で取得したデータを画面に表示するため、templates フォルダにHTMLファイルを作ります。 たとえば、以下のようなシンプルなテンプレートを index.html として配置しておきます。

<!-- myapp/templates/index.html -->
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>メッセージ一覧</title>
  </head>
  <body>
    <h2>投稿されたメッセージ</h2>
    <ul>
      {% for msg in messages %}
        <li>{{ msg }}</li>
      {% endfor %}
    </ul>
  </body>
</html>

先ほどの views.pyrender() 関数を使ったときに、ここで作成したテンプレートが呼び出されます。 messages というリストが context に入っていたので、{% for msg in messages %} の部分が実際のデータに置き換わります。

さらに、動的に保存されたデータを表示する場合は、モデルを利用してデータベースから読み込むコードを加えることになります。 たとえば、index ビューの内部で messages = Message.objects.all() として全部の投稿を取得すれば、テンプレート側では {{ msg.text }} のようにモデルの属性を参照できます。

Djangoで作るWebアプリの活用例

このようにDjangoでは、モデルを定義してビューにロジックを書き、テンプレートで画面を整えるだけで、基本的なWebアプリを構築できます。 では、実務レベルではどういったアプリに活用できるのかを見ていきましょう。

ECサイト

在庫管理や会員登録機能、カート機能など、いくつかの処理が必要になるECサイトはDjangoの得意分野です。 データベースと強く連携する機能が標準で用意されているので、商品やユーザー情報を管理しやすいでしょう。

また、商品一覧や購入履歴の表示などもテンプレートを使えば整理しやすく、管理画面から在庫数を更新する仕組みもスムーズに作れます。 そのため、小規模から中規模のECサイトを素早く立ち上げたい場合に選ばれることが多いと言えます。

ブログやニュースサイト

Djangoは、ブログやニュースサイトの構築にも適しています。 記事の投稿・編集を管理画面からすぐにできるため、管理側の運用が単純になります。 ライターが複数いる場合でも、認証と権限管理を通じて、ユーザーごとに機能を切り分けられる利点もあります。

また、記事リストや詳細ページの表示では、モデルとテンプレートの仕組みが自然に活きてきます。 必要に応じてタグやカテゴリー分けをしても、Djangoならそれほど複雑になりません。

管理画面での運用

Djangoを選ぶ理由の中でも、「管理画面が便利」という意見はよく聞かれますね。 開発中に管理画面へアクセスすると、モデルのデータをGUIで確認しながら登録や編集ができます。 以下のように admin.py へモデルを登録するだけで、あっという間に管理画面で扱えるようになります。

# myapp/admin.py
from django.contrib import admin
from .models import Message

admin.site.register(Message)

すると、/admin/ にアクセスしてログインすれば、Messageモデルの一覧やデータ編集画面を利用できます。 特別な画面を自作しなくても基本的な運用機能がそろっているのは、Djangoならではのメリットです。

よくある疑問

初めてDjangoに触れる方が抱きやすい疑問を取り上げてみましょう。 「フレームワークって難しくないの?」とか「本番運用ってどうするの?」といった不安を感じる人も多いかもしれません。

Djangoは初心者でも扱える?

Djangoは分割された構造がはっきりしているため、初心者でもロジックの配置場所を迷いにくいでしょう。 最初は用語の多さやディレクトリ構成に少し戸惑うかもしれませんが、慣れるにつれ「データはmodels.pyに、画面に表示したい処理はviews.pyに書く」という流れが定着するはずです。

また、テンプレートの文法もシンプルなので、HTMLを扱った経験が少しでもあればすぐに順応できます。 「静的ページを表示するだけ」からスタートしてもOKですし、少しずつモデルや管理画面に触れていく方法もおすすめです。

本番運用を考える時のポイント

本番環境にアプリをデプロイするときは、サーバーやセキュリティ設定などを検討する必要があります。 具体的には、下記のようなポイントが挙げられるでしょう。

  • セキュリティ対策の徹底
  • スケーラビリティを考慮したサーバー構成
  • データベースのバックアップと運用ルール
  • エラー監視ツールの導入

これらはDjangoに限らず、Webアプリ開発全般に共通するテーマです。 まずはローカル環境でアプリを完成させてから、本番用サーバーに移行する流れをつかめば、運用がしやすくなるでしょう。

複数のアプリを同じプロジェクトに追加する場合、フォルダ構成が混在しないように注意しておきましょう。

まとめ

ここまで、DjangoでWebアプリを作成する際の基本的な流れを紹介しました。 プロジェクト構造やモデル・ビュー・テンプレートの役割分担を理解すれば、Webアプリの全体像が見えやすくなるはずです。

Djangoは、認証機能や管理画面が最初から備わっているため、多様な場面で活用しやすいフレームワークと言えます。 実務での活用シーンとしては、ECサイト、ブログ、ニュースサイトなどが例として挙げられます。 管理画面を使えばデータの編集や運用も簡単に行えるので、初心者でも取り組みやすいでしょう。

とはいえ、初めて挑戦するときはどこから手をつければよいか迷うこともあるかもしれません。 最初は小さなアプリで「モデルからデータを取得して、ビューとテンプレートで表示する」流れを体験してみると、Djangoのメリットがより具体的に感じられるようになります。

アプリの機能を増やしていく際は、必要なディレクトリを追加しながら丁寧に設計することで、保守しやすくなるはずです。

Djangoでの開発に慣れれば、新しい機能を追加するハードルも自然と下がっていくでしょう。 ぜひ、自分に合ったペースで進めてみてください。

Pythonをマスターしよう

この記事で学んだPythonの知識をさらに伸ばしませんか?
Udemyには、現場ですぐ使えるスキルを身につけられる実践的な講座が揃っています。