【Python入門】Django(ジャンゴ)とは?導入からWebアプリ開発までの流れ

この記事の要点

  • WEB開発に必要とされる機能全てを実装でき、大規模な開発に向いている
  • 実際にDjangoをインストールし、アプリを作成してみよう
  • 初心者はFlaskを先に学習し、WEBアプリ開発の流れをある程度理解してからDjangoを学習するとよい

大規模なWEBアプリをPythonで開発することのできるDjangoをご紹介します。

インストール方法から実際にサンプルアプリの開発を通してDjangoについての理解を深め、Flaskと比較して自分に適した学習方法を確立してみましょう。

また、学習にオススメできる書籍3選を記事の後半でご紹介しています。

本記事を通してDjangoに興味ができた方は是非、学習を始めてみましょう。

Djangoとは?

DjangoはオープンソースのフルスタックWEBアプリケーションフレームワークであり、pythonで実装されています。

Django公式ドキュメント
https://docs.djangoproject.com/ja/4.1/

実際にWEBサービスをDjangoで開発している企業として

  • NASA
  • Pitch
  • ワシントンポスト

などが挙げられますが、これら以外にも多くの企業が採用している実践的なフレームワークです。

フルスタックフレームワークの特徴として、WEB開発に必要とされる機能全てを実装でき、大規模な開発にもよく利用される点があります。

ただし、この多機能さゆえにフレームワークの学習が難しくなってしまい、初心者には少しハードルの高いものだと言えます。

Flaskは必要最低限の機能しか備わっていないため、軽量ではありますが開発するアプリによっては拡張機能を追加したり、自分で実装したりする必要があります。

一方、Djangoはフルスタックのフレームワークであるため、機能不足で悩むことは少ないでしょう。

例えばFlaskでは備わっていない認証システムや管理画面がDjangoには備わっているため、アプリの設計でどちらを使用するかを判断します。

Djangoのメリット・デメリットと他のフレームワークとの違い

前回ご紹介したFlaskはマイクロフレームワークという必要最低限の機能を実装したシンプルな構造であるため、初心者向けのフレームワークだと言えます。

今回は大規模開発にも利用されるDjangoをご紹介するため、内容がとても複雑になります。

前回のFlaskの記事を読み、WEBアプリについての理解を深めた上で本記事を閲覧すると効率が良いと思います。

【Python初心者】定番のPythonフレームワークFlaskとは?導入からWebアプリ開発までの流れ

メリット

管理画面が基本の機能として実装されており、ユーザー認証が可能になります。

またMTVモデルという処理の担当ファイルやコードが理解しやすい場所に保存されるため、共同開発であってもスムーズにプロジェクトを進めることができます。

Djangoの利用者・利用企業は多く、インターネット上に情報があるため学びやすいことも特徴です。

デメリット

Djangoは機能が多いですが古いフレームワークなため、少し処理速度が遅くなります

ですが高度な処理を必要としない限り、処理速度を気にする必要はないでしょう。

学習面についても機能が多く、全体を理解するまでにはとても時間がかかってしまいます。前回ご紹介したFlaskからDjangoへと学習を進めてみましょう。

Djangoのインストールからアプリ作成までの流れ

注意点:他のサイトではDjangoを仮想環境にてインストールし、アプリの開発を行うといった流れがありますが、これは複数人での開発を前提としているためです。
Djangoについて理解を深めることが目的である本記事では理解しやすさを考慮し、仮想環境なしで構築します。

インストール方法

ターミナルで次のように入力し、Enterキーで実行します。

pip install django

正しくインストールができたか確認するため、ターミナルでpythonの対話シェルを開き、以下のコマンドを入力してください。

※ “>>>” は入力しなくて大丈夫です。

>>> import django
>>> django.get_version()

インストールしたDjangoのバージョンが表示されると成功です。

Pythonの対話シェルを閉じるには次のコードを使用します。

>>> exit()

参考として、インストールがうまくいかない場合はDjangoをアンインストールします。

pip uninstall django
(省略)
Proceed (y/n)?

実行すると本当にアンインストールするのかを聞かれるので、「y」と入力します。

アンインストールが完了したら同じ手順でインストールを行いましょう。

アプリ開発

DjangoでのWEBアプリ開発ではプロジェクトフォルダを作成します。

作成したフォルダをアプリの本体として扱います。

今回は「Project」という名前にしましょう。

ターミナルで作成したProjectフォルダへcdコマンドを用いて移動しましょう。

cd /User/.../Project

移動できたら次のコードを実行してください。

django-admin startproject config .

このコマンドでProjectフォルダ内にファイルやフォルダが生成されます。

少しだけ解説をすると、それぞれのファイルには以下のような役割があります。

urls.pyURLの設定ファイル
setting.pyプロジェクトに関する設定を行い、データベースの接続設定も担当する
wsgi.pyWEBサーバーとDjangoのアプリを連携させる

ローカルサーバー上で確認

開発用WEBサーバーが用意されているため、ローカル環境でプロジェクトを確認することができます。

次のコマンドで起動してみましょう。

python manage.py runserver

そしてターミナルに記載されている「http://127.0.0.1:8000/」にアクセスします。

※ 「http://localhost:8000/」でもアクセス可能です。

ロケットの画像と「The install worked successfully! Congratulations!」というメッセージが表示されていたら成功です。

これでローカルサーバー上でのアプリの確認ができました。

この処理を終了するには”control+ c”を入力してください。

トップページ開発

ではWEBアプリのトップページを開発してみましょう。

作成したサイト(HTMLファイル)を「localhost:8000/index」へアクセスがあった場合に表示することを目標としてsampleというアプリを開発してみます。

まずはターミナルでProjectに移動した状態で次のコードを実行してください。

python manage.py startapp sample

このコードでsampleというアプリを作成できます。

生成されたsampleアプリのフォルダ内にあるurls.pyでアプリのURL設定をし、これにviews.pyを使ってViewを紐付けます。

もし、urls.pyが生成されなかった場合も後ほど作成するため問題ありません。

URLの設定を行いましょう。

sampleアプリフォルダ内のurls.pyを開き、次のように書き換えます。

※ 生成されなかった場合はファイルを生成

# インポート
from django.urls import path
from . import views

app_name = 'sample'
# 「index/」にアクセスされた場合にindexというViewが呼び出されるように定義する
urlpatterns = [
    path('index/', views.IndexView.as_view(), name='index'),
]

次にsampleアプリフォルダ内にあるviews.py開き、次のように書き換えます。

# インポート
from django.views.generic import TemplateView
# テンプレートViewを生成
class IndexView(TemplateView):
    template_name = 'index.html'

テンプレートファイルを管理するため、Projectの直下にtemplatesフォルダを作成します。

次にconfigフォルダ内にあるsetting.pyを以下のように書き換えてください。

※ TEMPLATESという変数のみを変更します。

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates'), ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

プログラム内にosモジュールを利用しているため、プログラムの先頭に次のコードを追加しておきましょう。

import os

では表示するHTMLファイルを作成しましょう。

用意するサイトは自由に記述しても構いませんが、サンプルとして次のようなコードとします。

<html>
  <head>
    <title>サンプルです。</title>
    <meta charset='utf-8'>
  </head>
  <body>
    <h1>サンプルアプリです。</h1>
  </body>
</html>

最後にアプリを新規作成した際にはconfigフォルダ内のurls.pyに作成したアプリのurls.pyを追加する必要があります。

これはDjangoにROOT URLConfという考え方があり、これに対応するurls.pyのみを参照するためです。

configフォルダ内のsetting.pyを以下のように書き換えましょう。

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

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('sample.urls')),
]

では実際にローカルサーバー上で動作を確認してみましょう、

python manage.py runserver

このコマンドで起動し、「localhost:8000/index」にアクセスします。

表示内容が用意したindex.htmlであれば成功です。

前回のFlaskとは違い、とても複雑でしたね。

FlaskとDjangoのどちらを学習するか、初学者にとっては大きな分かれ道です。

最終的にどちらも学習した状態を目指すと良いかもしれません。

日本語化されているのでDjango の公式ドキュメントもぜひ確認してみましょう。

Django ドキュメント
https://docs.djangoproject.com/ja/4.0/

Djangoの学習におすすめの書籍

Flaskと比べてDjangoは大規模開発のため難しく感じたかもしれません。

学習ハードルは高いですが世界中で使用されている主流のフレームワークです。

自分のスキルと目標に適した書籍を通して学習を少しずつ進めてみましょう。

動かして学ぶ!Python Django開発入門 第2版

Djangoを学びつつ、WEBアプリ開発についても知識を得られる学習ができ、初学者にはとてもオススメの一冊です。

さまざまな機能の基本が丁寧に解説されているため、知識がなくとも着実に理解を深められます。

実践Django Pythonによる本格Webアプリケーション開発

アプリの実践的なテスト方法やユーザーモデルのカスタマイズなどを解説した書籍です。

実際の業務で役に立つ深い内容ですが、その分難しい内容になるため初学者は入門本である程度知識を蓄えてから始めることをオススメします。

Django Webアプリ開発実装ハンドブック

Djangoの中身まで全体的に処理の流れを確認することができる中級者向けの解説書です。

実際にブログの機能を作成して学習することができます。

また、Pythonを独学で学習していて難しいと感じている方には、スクールもおすすめです。

Pythonは転職やフリーランスでの活動にも有利なため学習の費用対効果が高いので、スクールを活用してみるのもいいかもしれませんね。

Pythonを学べるプログラミングスクール5つ【コスパで選ぶ】

まとめ

今回はフルスタックWEBアプリケーションフレームワークであるDjangoのインストール方法からアプリ開発までの流れをご紹介しました。

とても複雑なので、初学者は前回ご紹介したFlaskを学習することでWEBアプリ開発の流れをある程度理解してからDjangoを学習するとスムーズに理解できます。

Pythonの基礎とフレームワークなどを用いる応用には大きな差を感じたでしょう。

応用に慣れるためには自分で簡単なWEBアプリを開発すると良いでしょう。

また、PythonではWEBアプリの他にもデスクトップアプリも作成することができます。

デスクトップアプリ作成に使えるライブラリを中心に、アプリの配布方法や学習方法も解説していますので、デスクトップアプリに興味がある方は参考にしてみてください。

Pythonでデスクトップアプリを作成する時に使えるライブラリ4選【アプリの配布方法も解説】

そして、WEBアプリを制作したら、それを公開、アピールするためのポートフォリオを作りたいと考えている方もいるかと思います。

ポートフォリオの作り方やコツをまとめたこちらの記事も参考になりますよ。

Pythonエンジニアによる実際のポートフォリオ例と作り方や作成時のコツについて紹介