ソフトウェアエンジニアのためのDjango入門:締切を守る完璧主義者のためのフレームワーク
Djangoは、Python製のウェブフレームワークです。スピーディーな開発と、保守性の高いコードを書くための工夫が詰まっています。開発者が「締切のある完璧主義者」と自称するほど、生産性を高めることに特化しています。
筋トレに例えると、Djangoは、フィットネスジムにある最新鋭のトレーニングマシンのようなものです。マシンが部位ごとのトレーニングを補助するように、Djangoもウェブ開発の様々なタスクを自動化・効率化してくれます。
面倒な作業からの解放
データベースとの連携
ORM(オブジェクト関係マッピング)という仕組みを使えば、SQLを直接書かずにPythonのコードだけでデータベースを操作できます。これは、重いバーベルを補助してくれるトレーナーがいるようなものです。
管理画面の自動生成
アプリのデータ管理に必要な管理画面を、たった数行のコードで自動生成してくれます。煩わしいルーチンワークから解放されます。
セキュリティの確保
セキュリティ対策の標準搭載
CSRF(クロスサイトリクエストフォージェリ)やXSS(クロスサイトスクリプティング)といった一般的な攻撃に対する対策が標準で備わっています。セキュアなコードを書くためのプロテインだと思ってください。
拡張性の高さ
豊富なエコシステム
認証機能、REST API、画像処理など、さまざまな機能を持つ「アプリ」が提供されており、それを組み合わせることで迅速に機能を追加できます。まるで新しい筋トレ器具を好きなだけ追加できるようなものです。
Pythonがインストールされていることが前提です。
仮想環境の作成
他のプロジェクトとの依存関係を分離するために、仮想環境を作成しましょう。
python -m venv venv
仮想環境のアクティベート
筋トレウェアに着替えるようなものです。
macOS / Linux
source venv/bin/activate
Windows
venv\Scripts\activate
Djangoのインストール
筋トレマシンを導入します。
pip install django
プロジェクトの作成
自分のジムを立ち上げます。
django-admin startproject myproject .
開発サーバーの起動
準備運動を兼ねて、サーバーを起動してみましょう。
python manage.py runserver
ブラウザで http://127.0.0.1:8000/ にアクセスし、「The install worked successfully! Congratulations!」と表示されれば成功です!
ウェブサイトのアクセスがあったときに、どのような処理をするかをviewsで定義します。これは筋トレでいえば、「腹筋を50回する」というトレーニングメニューを決定するようなものです。
プロジェクトの内部で、具体的な機能を持つ「アプリ」を作成します。
python manage.py startapp myapp
ユーザーに表示する内容を定義します。
# myapp/views.py
from django.shortcuts import render
from django.http import HttpResponse
def hello_world(request):
"""
腹筋トレーニングメニュー: ユーザーに「Hello, world!」と表示する
"""
return HttpResponse("Hello, world!")
def about(request):
"""
腕立てトレーニングメニュー: ユーザーに「これはaboutページです」と表示する
"""
return HttpResponse("これはaboutページです。")
ユーザーがどのURLにアクセスしたら、どのビューを実行するかを決めます。
# myapp/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('hello/', views.hello_world, name='hello_world'),
path('about/', views.about, name='about'),
]
作成したアプリのURLをプロジェクト全体に登録します。
# myproject/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
# myappのURL設定をプロジェクトに組み込む
path('app/', include('myapp.urls')),
]
これで、http://127.0.0.1:8000/app/hello/ にアクセスすると「Hello, world!」が、http://127.0.0.1:8000/app/about/ にアクセスすると「これはaboutページです。」が表示されるようになります。