はじめに
普段、業務でDjangoを利用していて、コマンドを度々忘れてしまうので、
ここにメモしてコピペできるよう作りました。
環境
macOS Mojave 10.14
Python3.x.x
Django2.x
セットアップ編
Djangoインストール
作成するアプリケーションごとにライブラリ等合わせる必要があるので、
プロジェクトディレクトリにvirtualenv(venv)
を作成
- プロジェクトのディレクトリ作成(プロジェクトに)
mkdir python_project
cd python_project
- venv作成
python3 -m venv myvenv
-
virtualenv
起動
source myvenv/bin/activate
- Djangをインストールする前にvenv環境をアップデート
(myvenv)~$ pip install --upgrade pip
- Djangoインストール
(myvenv) ~$ pip install django==2.1
プロジェクト作成編
- プロジェクト作成
(myvenv)~$ django-admin startproject sample_project .
- 現状のファイル構造
python_project
├── manage.py
└── sample_project
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
app作成&実行編
- アプリケーション作成(manage.pyが存在するディレクトリで実行)
(myvenv)~$ python manage.py startapp sample_app
- DBに入れるための移行ファイルの作成とマイグレーション
(myvenv)~$ python manage.py makemigrations sample_app
(myvenv)~$ python manage.py migrate
- サーバ起動
(myvenv)~$ python manage.py runserver
shell編
- shell起動
(myvenv)~$ python manage.py shell
- モデルインポート
>>> from sample_app.models import *
- モデルデータ全取得
>>> 'モデル名'.objects.all()
- DBにデータ投入(saveコマンドで投入データを保存)
>>> data = 'モデル名'('カラム名'='値', 'カラム名'='値',...)
>>> data.save()
- 特定のオブジェクト取得
>>> data = 'モデル名'.objects.get('カラム名'='値')
>>> data.'カラム名'
'値'
- 特定のオブジェクト削除
>>> data = 'モデル名'.objects.get('カラム名'='値')
>>> data.delete()
その他
- 既存DBからテーブルのモデルを出力
(myvenv)~$ python manage.py inspectdb tablename
- モデルからER図作成
事前にインストール
(myvenv)~$ brew install Graphviz
(myvenv)~$ pip install pygraphviz
(myvenv)~$ pip install django-extensions
ER図作成(settings.pyでextensionsを有効化)
(myvenv)~$ python manage.py graph_models -a -o er.png