文書の過去の版を表示しています。
Django
環境構築
venvを使って仮想環境構築しDjangoを利用する。
$ mkdir django $ python -m venv django/ $ source django/bin/activate
仮想環境内でpipでdjangoをインストール
$ pip install django
以下、公式のチュートリアルに沿ってアプリを作成しながら必要事項をメモしていく。
プロジェクト作成
プロジェクトの作成
$ django-admin startproject app01
- プロジェクトを格納するapp01ディレクトリが作られる
- app01内には「app01」と「manage.py」がある
- 内部のapp01はプロジェクトのメインディレクトリ。設定ファイルやURLディスパッチャの設定ファイルが格納されている。
- manage.pyはプロジェクト管理用のユーティリティ
テスト用の内部サーバ起動
Djangoは開発用のWebサーバを持っている。
app01/settings.pyにアクセス許可の設定
ALLOWED_HOSTS = ["*"]
サーバの起動
$ python manage.py runserver 0:8000
ポート番号8000で待ち受け。0:ですべてのホストから接続を受け付ける。
コマンドでの待ち受けIPを指定するとローカルホストからのみ接続できる。ここでは別ホスト上に開発環境があるので、接続されているインターフェースにバインドする。0を指定すればすべてのインターフェイスにバインド。
起動コマンドでIPアドレスにアサインすることと、設定ファイルの接続許可が両方正しく設定されて、初めて外部から接続できる。うまく起動できれば、http://[IP Address]:8000/でテストサーバに接続され、ロケット打ち上げが表示される。
その他の基本設定
app01/settings.pyの基本設定
言語やタイムゾーンを設定
LANGUAGE_CODE = 'ja' TIME_ZONE = 'Japan'
アプリケーションの作成
プロジェクト内に具体的に機能するアプリケーションを作成。
reportという名前のアプリケーションを作成する
$ python manage.py startapp report
- app01(プロジェクトの親ディレクトリ)内にreportディレクトリが作成され、アプリケーションに関するファイル一式が格納される。
Viewの作成
Viewはアプリケーションのロジック、処理を行う中心的な部分。データの加工やテンプレートの呼び出しなど、様々な処理を担当する。
app01/report/views.py
viewの本体。とりあえず単純に文字を表示するだけ。
from django.shortcuts import render from django.http import HttpResponse def index(request): return HttpResponse("Hello, Django.")
app01/report/urls.py
URLのディスパッチ設定。アプリケーションレベルのURLはここでディスパッチする。このファイルは、プロジェクトレベルのURLディスパッチにインクルードして使う。アプリケーション作成時には自動作成されない。
urlpatternsにURLとViewの対応を設定する。ここでは「」でルートディレクトリへのアクセスをviews.pyのindex関数と対応づける。
from django.urls import path
from . import views
urlpatterns = [
path(
, views.index, name='index'),
]
app01/app01/urls.py
プロジェクトレベルのURLディスパッチ
include関数を読み込んで、アプリケーションレベルのURLディスパッチ設定ファイルを読み込むように設定する。
ここでは/report/以下のURLはreport/urls.pyを読み込んで処理する。
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('report/', include('report.urls')), path('admin/', admin.site.urls), ]
以上を設定すると、http://[IP Address]:8000/report/で「Hello, Django.」が表示される。
Model
データベースからデータを呼び出したり保存したりする。直接クエリを発行するのではなく、オブジェクトを介して操作。
データベース
開発途中は取りあえずSQLiteを利用する。本番環境ではPostgreSQLなりMySQLに切り替える。データベースの定義はDjangoが自動的に生成してくれるので、バックエンドはあまり意識する必要はない。とりあえず、設定ファイルだけ確認しておく。
app01/app01/settings.py
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }
標準ではSQLiteが使われる。