「モーニングコーヒー中にDjangoについて勉強したいな…」
そんな風に思うことあると思います。
この記事では、Djangoについてよく使う基本的なコマンドとマイグレーション、テストデータ作成について説明します。
モーニングコーヒーの時間を有効活用して、Djangoについて詳しくなっていきましょう。
Djangoのプロジェクトで仮想環境〜Djangoプロジェクト作成まで
まずは作業用のディレクトリを作成する
$ mkdir djnago_blog
$ cd djnago_blog
仮想環境の構築
$ python3 -m pip install pipenv
仮想環境に入る
$ pipenv shell
仮想環境に入ると以下のようになります。
(blog) ….blog $
djangoのインストール
$ python3 -m pip install Django
djangoプロジェクトの作成
$ django-admin startproject Djangoプロジェクト名
例:$ django-admin startproject mysite
Djangoのバージョン確認
$ python3 -m django --version
環境の立ち上げ
$ python3 manage.py runserver
Djangoのアプリ作成
manage.pyがあるディレクトリで以下を叩きアプリを作る
$ python3 manage.py startapp Djangoアプリ名
例:$ python3 manage.py startapp blog
ライブラリのインストール
$ python3 -m pip install -r requirements.txt
※requirements.txtがない場合は、ファイルを作成しておく
※requirements.txtに記載されている内容がインストールされる
マイグレーション編
Djangoでマイグレーションする流れは、以下です。
①models.pyに定義
②マイグレーションファイルを作成する
③マイグレート実行
④DBにテーブルが作成される
models.pyに定義する
from django.db import models
from django.utils import timezone
import uuid
class Users(models.Model):
user_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
user_name = models.CharField(verbose_name='ユーザー名', max_length=20)
delete_flg = models.BooleanField(verbose_name='論理削除', default=False)
created_at = models.DateTimeField(verbose_name='作成日時', default=timezone.now)
updated_at = models.DateTimeField(verbose_name='更新日時', blank=True, null=True)
マイグレーション関連のコマンド
マイグレーションファイルの作成※—nameでマイグレーション名を指定できる
$ python3 manage.py makemigrations Djangoアプリ名 --name マイグレーションファイル名
例:$ python3 manage.py makemigrations blog --name add_post
マイグレーションの実行
$ python3 manage.py migrate Djangoアプリ名
マイグレーションファイル一覧の表示
$ python3 manage.py showmigrations Djangoアプリ名
マイグレーション名のファイルまでロールバックする
※migration_nameの実行後の状態まで
$ python3 manage.py migrate Djangoアプリ名 migration_name
マイグレーションの履歴を削除
※完全に初期化する
$ python3 manage.py migrate appname zero
テストデータの作成編
Djangoでテストデータを作成する流れは以下です。
①テストデータ用のjsonファイルを作成する
②テストデータを投入するコマンドを実行する
③DBにテストデータが作成される
テストデータの投入
テストデータ用のjsonファイルを作成します。
[
{
"model": "blog.Users",
"fields": {
"user_id": "36ce89264b8a41cdbea9c3a1fc578763",
"user_name": "yamada",
"delete_flg": false
}
}
]
"model": "blog.Users",
とありますが、blogはapps.pyにこんな感じで記載されていると思いますので、name = ‘blog’の部分を参照しています。
from django.apps import AppConfig
class BlogConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'blog'
blog.UsersのUsersは、models.pyで定義したクラス名を参照しています。
上記ができたら、以下を叩くことでテストデータを投入できます。
$ python3 manage.py loaddata spacePick/fixtures/ファイル名.json
例:$ python3 manage.py loaddata blog/fixtures/users_data.json
まとめ
Djangoの基本的なコマンドとマイグレーションについて説明してきましたが、もし他にも補足などがありましたらコメントで教えてください。