14
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

モーニングコーヒー中に学ぶDjangoで使う基本コマンドとデータ作成

Posted at

「モーニングコーヒー中に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の基本的なコマンドとマイグレーションについて説明してきましたが、もし他にも補足などがありましたらコメントで教えてください。

14
4
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
14
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?