#Memo
##仮想環境立ち上げ
$pip3 install pipenv
$pipenv shell
##仮想環境にdjangoインストール
$pipenv install django==バージョン
##プロジェクト作成
$django-admin startproject プロジェクト名
プロジェクトを作成するとプロジェクト名と同じディレクトリが作成される。
ここにプロジェクト全体で使いファイルが保存される。
__inti__.py
>Djangoプロジェクトを実行する時の初期化処理を行うスクリプトファイル。
asgi.py
>ASGIという非同期Webアプリケーションを作成するためのプログラム
settings.py
>プロジェクトの設定情報を記述ファイル,アプリケーション作成時にINSTALLED_APPS[]にアプリケーション名を追加する
urls.py
>プロジェクトでURLを管理
wsgi.py
>WSGIという一般的なwebアプリケーションのプログラム
##アプリケーション作成
$python manage.py startapp アプリケーション名
==アプリケーションフォルダ作成時の構成==
migrationsフォルダ
>データベース関係の機能のファイルがまとめられる
__inti__.py
>アプリケーションの初期化処理のためのファイル
admin.py
>管理者ツールのためのファイル
apps.py
>アプリケーション本体の処理をまとめる
models.py
>モデルに関する処理
tests.py
>プログラムのテストに関するもの
views.py
>画面表示に関するもの
==個別に作成項目==
urls.py
>アプリケーションごとにルーティングを設定する必要があるため
templatesフォルダ
>テンプレート機能を利用(templatesフォルダ内にアプリケーション名のフォルダを作成する。settings.pyに追記したアプリケーションとの連携,render関数でレンダリングしにいく)
staticフォルダ
>静的ファイルの利用,staticフォルダ内にアプリケーション名のフォルダを作成する,staticテンプレートタグを使用することで自動的にstaticフォルダ内をみてくれる
##webサーバー起動
$python manage.py runserver
##マイグレーションファイル作成
$python manage.py makemigrations アプリケーション名
##マイグレーション実行
$python manage.py migrate
##既存のDBに接続する
・Django既存DBへの接続参考URL
今回ははheroku環境にあるClearDB(mysql)に接続する必要があったのでそれを記録。
DATABASES = {
'default': {
# 既存コード
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': BASE_DIR / 'db.sqlite3',
# herokuDB接続情報
'ENGINE': 'django.db.backends.mysql',
'HOST': os.getenv('DB_HOSTNAME'),
'NAME': os.getenv('DB_NAME'),
'USER': os.getenv('DB_USERNAME'),
'PASSWORD': os.getenv('DB_PASSWORD'),
}
}
■接続テスト
下記コマンドで設定ファイルのDBに接続できればOK
$python manage.py dbshell
■herokuDBへの接続情報の確認
herokuにログイン後、下記コマンドを実行
環境変数を一覧することができるのでCLEARDB_DATABASE_URLにあるのがDBへの接続情報
$heroku config --app アプリケーション名
##既存DBからのモデル作成(自動生成)
接続テストが完了したら実際にdjangoで使えるようにモデルを作成します。
$python manage.py inspectdb
こちらのコマンドを打ち込むとDBの情報をもとに
モデルのコードが返ってくる。(この際には特に保存はされません。)
返ってきたモデルのコードが問題なさそうならコピーペーストでモデルに貼り付け。
もしくは下記コマンドを打つことでモデルファイルが生成される。
$python manage.py inspectdb >> models.pyへのパス/models.py