ba230t / try_django

ジャンゴチュートリアルをやった時のメモ

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

はろー、じゃんご

「ベストプラクティス」について

正直、変にこねくり回すよりも「cookiecutter-django」を使うのが一番だと思う(今回は使っていない)。

settings.pyも、標準では環境ごとに分かれていないので(分ければいいだけだけど)めんどくさい。

今回は素の状態で進めている。

ただし、cookiecutter-djangoではパッケージ管理に素のpipを使っているが、ここではpipenv使っている。

Dockerfileについて

環境変数設定の意図は以下の通り

ENV PYTHONDONTWRITEBYTECODE 1 # [Python]コンパイルキャッシュ(*.pycファイル)を作成しない:邪魔
ENV PYTHONUNBUFFERED 1        # [Python]stdoutへのprintにバッファを使わない:ログ出力が早くなる
ENV PIPENV_VENV_IN_PROJECT 1  # [Pipenv]プロジェクトの直下に仮想環境を作る:Pipfile更新のたびにイメージの再ビルドをしなくて済む

コマンドリファレンス

clone直後には以下を行う

# migrate前にDBを作成しておく必要がある
# migrate後にテストデータを入れておく
docker-compose build
docker-compose run app psql -U postgres -h db -c "create database mydatabase;"
docker-compose run app pipenv run python manage.py migrate
docker-compose run app pipenv run python manage.py loaddata polls/fixtures/test_data.json
docker-compose up

appにアクセスするとき

# 他のサーバと競合しそうにない7000番を指定している
# /は未実装、/pollsはpollsアプリ、/adminはDjango標準の管理画面
open http://localhost:7000/polls

管理画面にアクセスするとき

# まず管理者ユーザを作成する必要がある(パスワードは必須)
docker-compose exec app pipenv run python manage.py createsuperuser
open http://localhost:7000/admin

テストするとき

# テストを実行する
docker-compose exec app pipenv run test

サーバに接続するとき

# app(pythonなので、抜ける時はexit()関数)
docker-compose exec app pipenv run python manage.py shell

# db(psqlなので、抜ける時は\qコマンド)
docker-compose exec app pipenv run python manage.py dbshell

マイグレーション関連

# 「0001_initial」実行時に流れるSQLを確認する
docker-compose exec app pipenv run python manage.py sqlmigrate polls 0001_initial

# マイグレーションをすべて実行する
docker-compose exec app pipenv run python manage.py migrate

# マイグレーション履歴を確認する
docker-compose exec app pipenv run python manage.py showmigrations

# 「0001_initial」へロールバックする
docker-compose exec app pipenv run python manage.py migrate polls 0001_initial

# すべてのマイグレーションを取り消す
docker-compose exec app pipenv run python manage.py migrate polls zero

パッケージ関連

# 新しいパッケージ(例:psycopg2-binary)をインストールしてPipfile.lockを更新する
docker-compose run app pipenv install psycopg2-binary

データ操作

# データをエクスポートする
docker-compose exec app pipenv run python manage.py dumpdata polls -o fixture.json

# データをインポートする
docker-compose exec app pipenv run python manage.py loaddata fixture.json

プロジェクト操作

# 新しいアプリを作成する
docker-compose run app pipenv run python manage.py startapp my_great_app

About

ジャンゴチュートリアルをやった時のメモ


Languages

Language:Python 88.2%Language:HTML 8.9%Language:Dockerfile 2.2%Language:CSS 0.6%