1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Djangoプロジェクト〜アプリ立ち上げの流れ

Last updated at Posted at 2022-08-29

この記事では、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のテーブルになる

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?