[Django]Pythonで流行っているフレームワーク


MVC/MVTパターンのフレームワーク。
限られた目的(APIサーバーなど)で使う分にはFlaskなどよりパフォーマンスが悪いとされている。

レイヤードアーキテクチャであり、ドメインでの分離は難しいため、マイクロサービスアーキテクチャには不向き。
モノリシックで十分、つまりスケーリングなどを求めない中小規模のシステムでは実装コスト面で有利とされている。

Django ドキュメント | Django ドキュメント | Django (djangoproject.com)

チュートリアルに大体書いてある。
これに限らず、Pythonの仮想環境を作成してから始めるが割愛。

Djangoインストール

Django · PyPI

pip install Django

プロジェクト作成

 django-admin startproject (プロジェクト名)

作成したプロジェクトディレクトリの下にmanage.pyが生成されているはず。
Djangoではこのスクリプトで管理する。

コミット前に気をつけること

(プロジェクト名)/(プロジェクト名)/settings.pyにはSECRET_KEYのような情報がソースコードにべた書きされている。間違ってコミットしないように注意。

(広く使われていようとも、こういう変な作りがある。)

開発サーバー起動

manage.pyにrunserverをパラメータとして渡す。

python manage.py runserver

アプリケーション作成

テンプレートからアプリケーションを作成する場合はこんな感じ。

python manage.py startapp (パッケージ名)

プロジェクト名と同じ名前のディレクトリが作成されているはずなので、settings.pyに加える。
例えば、python manage.py startapp appで作成した場合、apps.pyのAppConfigを追加するみたいな感じで。

INSTALLED_APPS = [
    'app.apps.AppConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

尚、startappで作成したディレクトリの下にはmodels.py、views.pyがあり、MVCパターンに沿って実装すると、コマンド一つでSQLなどを自動的に作ってくれる仕組み。

データベース関連操作

python manage.py makemigrations (パッケージ名)
python manage.py showmigrations (パッケージ名)

showmigrationsするとこんな感じで表示される。
実際にSQLが反映(テーブルが作成)されていない状態。

app
 [ ] 0001_initial

モデルが必要とするSQLはsqlmigrateで表示でき、migrateで実際にテーブルを作成するという流れ。

python manage.py sqlmigrate (パッケージ名) (インデックス)
python manage.py migrate

無事に終わると、チェックが入る。

app
 [X] 0001_initial