この記事では、Djangoのプロジェクト、アプリの立ち上げ方を紹介する。つまり、初期設定の説明を行う。
-
アプリ開発での応用は、以下の記事を参考にする
-
処理の流れ
- プロジェクトを管理するdirを作成
- 仮想環境を構築
- 仮想環境にDjangoをinstall
- プロジェクトを作成
- アプリ作成
- settings.pyの設定
- マイグレーション
- gitに登録する
- Djangoサーバー起動
- Django管理サイトにログイン
- Appendix(付録)
- RDBMS別のDB接続方法
プロジェクトを管理するdirを作成
ターミナル
$ cd Desktop
$ mkdir dir名
$ cd dir名
$ code .
- プロジェクトを管理するdirを作成
仮想環境を構築し、Djangoをインストール
vscode
$ python3 -m venv 仮想環境名
$ source 仮想環境名/bin/activate
$ pip install django
$ django-admin startproject プロジェクト名
$ cd プロジェクト名
- 仮想環境を構築
- 仮想環境内にDjangoをインストール
- プロジェクト立ち上げ
プロジェクトを作成
vscode
python3 manage.py startapp アプリ名
- アプリ立ち上げ
settings.pyの設定
vscode
DEBUG = True # 本番環境(デプロイ環境)ではFalse
ALLOWED_HOSTS = ['*'] # 全てのホストを許可(本番環境では['*']にしてはいけない)
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'アプリ名', # 追加
]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [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',
],
},
},
]
LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'
- ALLOWED_HOSTS:接続を受け付けるサーバを指定する環境変数
- INSTALLED_APPS:作成したアプリを登録する環境変数
- TEMPLATES:テンプレートの設定を行う環境変数
- DIRS:テンプレートの検索対象とするフォルダをリストで指定。APP_DIRSより先に検索される
- APP_DIRS:各アプリ内のtemplatesディレクトリをテンプレートの検索対象にするかを指定。デフォルトでTrueなので、settings.py内のINSTALLED_APPSに記載あるアプリから順にtemplatesフォルダを探索する
- BASE_DIR:プロジェクトdir。つまり、manage.pyを格納しているディレクトリ
- 作成するアプリごとに、templatesディレクトリでまとめると整理しやすい
dir階層
project_dir
├── env
└── project_dir <= BASE_DIR
├── accounts
├── app
├── peoject_dir
├── templates # 作成
├── db.sqlite3
└── manage.py
マイグレーション
vscode
$ python3 manage.py migrate
- デフォルトのモデルをsqlite(RDBMS)のDB内のテーブルとして反映
gitに登録する
vscode
# GitHubでリモートリポジトリを作成しておく
$ git init
$ git add . # ローカルリポジトリにステージング
$ git commit -m "コミットメッセージ" # ローカルリポジトリにコミット
$ git status # 開発ブランチの状態を確認
$ git remote add origin リモートリポジトリURL # ローカルリポジトリとリモートリポジトリを紐づける
$ git push origin master # リモートリポジトリにpush
- プロジェクトをgitで管理する
- git add .コマンドを用いてステージングする場合、manage.pyを含むdirまで移動してから実行すること
Django開発サーバー起動
vscode
$ python3 manage.py runserver
- 開発サーバ起動
Django管理サイトにログイン
vscode
$ python3 manage.py createsuperuser
-
Emailは任意(空白でも可)
-
管理ユーザ名(スーパーユーザ)とそのユーザのパスワードは必須
-
トップページのURLの末尾にadmin/をつけてadminサイトにアクセス
-
作成した管理ユーザでログイン
-
Django管理サイトとは:
- Djangoで作成したWebアプリケーションのデータを管理するためのサイト
- つまり、Djangoにデフォルトで組み込まれているアプリの1つ
- 利用するのは主に管理者(Administrator)や開発者
- 管理サイトを通して、簡単にモデルに対応したテーブルのレコードを操作(CRUD:追加、削除、変更)することが可能
Appendix(付録)
- デフォルトのsqliteにデータを保存している場合、全て消えるので注意
- Userモデル内のデータも消えるので、再度createuerを実行する必要がある
- 最初からRDBMSに接続しておくことを推奨
- python3 manage.py runserverを行う際は、RDBMSのサーバを起動しておく必要がある
PostgreSQLのDBに接続
- PostgreSQL側
- PostgreSQLサーバを起動
- サーバに接続し、superuserであるpostgres(DB初期ユーザ)でDB(appdb)を作成
- Django側
- PostgreSQLに接続するためのライブラリを仮想環境内にインストール
- settings.pyのDATABASESをsqlite3からPostgreSQLに修正
- Django管理サイトのスーパーユーザを作成
- マイグレーション
PostgreSQL
$ pg_ctl start -D ./django_project
$ createdb -U postgres appdb
※DBクラスタを作成済みである前提
$ cd Desktop
$ pg_ctl initdb -D ./django_project
vscode
(env) $ pip install psycopg2
※インストールできない場合は、(env) $ pip insatall psyconpg2-binaryを実行
settings.py
DATABASES = {
'default': {
'ENGINE':'django.db.backends.postgresql_psycopg2', # PostgreSQL使いますよ宣言
'NAME': 'appdb', # データベース名
'USER': 'postgres', # データベースに接続するDBユーザー名
'PASSWORD': 'password1', # データベースに接続する際のDBユーザのパスワード
'HOST': '', # 'localhost'
'PORT': '', # 5432
}
}
※作成したDBクラスタ(django_project)内に、postgres(DBユーザ)が作成されていて、postgresユーザにパスワードが設定されている前提
$ psql -U postgres -d postgres
postgres=# ALTER USER postgres WITH PASSWORD 'password1';
-
PASSWORD
:DBユーザのパスワードを指定。DB接続時の認証に使用される。「$ createuser user1 -P」コマンドによって、user1(DBユーザ)にパスワードを設定していない場合は、空白でも可。(おそらく) -
HOST
:接続するPostgreSQLサーバのIPアドレス、または’localhost’を指定。空白の場合、PostgreSQLの環境変数PGHOSTの値を使用する。PGHOSTを指定していない場合は、localhostに接続する -
PORT
:接続するPostgreSQLサーバのport番号を指定。空白の場合、PostgreSQLの環境変数PGPORTの値を使用する。PGPORTを指定していない場合は、5432に接続する
vscode
$ python3 manage.py createsuperuser
$ python3 manage.py migrate
- PostgreSQL側で
- 作成したデータがappdb内のテーブル(アプリ名_モデル名)に登録されている
- SELECT * FROM アプリ名_モデル名;を実行するとデータが確認できる
※DjangoのモデルがPostgreSQLのDBのテーブルになる