LoginSignup
0
5

More than 3 years have passed since last update.

Django入門編を終えた感想

Posted at

はじめに

以下のページを参考に、PaizaCloud上で簡単なWebアプリケーションを作成してみました。
https://paiza.hatenablog.com/entry/2018/02/28/paizacloud_django

今回は実際にDjangoを利用してみて驚いた点を紹介します。

モデルファイルを元にテーブルが作成される

Djangoでアプリケーションディレクトリ上で作成した「models.py」の定義データを元にテーブルが作成されます。
要するにアプリケーションで使用するテーブルを作成するためのDDL実行などが一切不要ということです。
手順は以下のようになります。

【1】modelファイル作成(models.py)

from django.db import models

# テーブル名は「アプリケーション名 + "_" + メソッド名」の形式で作成されます
# 1メソッド:1テーブル
class Post(models.Model):
    # カラム名 = models.作成するカラムの種類に該当するメソッド(定義情報) 
    body = models.CharField(max_length=200)

【2】マイグレーションファイル作成
models.py を元に、以下コマンドによりマイグレーションファイル(※1)を作成する。
(※1)テーブルを作成するための定義ファイル。「models.py」を元に作成される。

$ python manage.py makemigrations アプリケーション名

★実際には上記コマンドを実行したことによりアプリケーションディレクトリに「migrations」というディレクトリが作成されました。「migrations」の中にはテーブルの定義情報、スクリプトが格納されているようです。

【3】DB反映
以下コマンドを実行し、【2】で作成したマイグレーションファイルの情報をDBへ反映する。
(【2】で一緒に作成された「migrations」ディレクトリ内のスクリプトが実行される模様)

$ python manage.py migrate

【4】テーブル定義情報を確認する
【1】でmodels.pyに定義したテーブル情報が実際にDBに定義されていることを確認する。

# インストールしているDBシェルを呼び出し(入門編ではmysqlを使用)
$ python manage.py dbshell

# 定義されているテーブル一覧参照
# todo_postテーブルが作成されていることを確認(アプリケーション名は「todo」)
mysql> show tables;
+----------------------------+
| Tables_in_mydb             |
+----------------------------+
| auth_group                 |
| auth_group_permissions     |
| auth_permission            |
| auth_user                  |
| auth_user_groups           |
| auth_user_user_permissions |
| django_admin_log           |
| django_content_type        |
| django_migrations          |
| django_session             |
| todo_post                  |
+----------------------------+
11 rows in set (0.00 sec)

# todo_postテーブルのカラム情報を参照
# bodyカラムが定義されていること
# ※なお、PrimaryKeyが定義されていない場合は自動でidカラムがPrimaryKeyとして定義される模様
mysql> describe todo_post;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| body  | varchar(200) | NO   |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

上記の仕様により、models.pyファイルの共有のみで各環境ごとに同じテーブル定義を容易に利用できるようです。テーブル定義情報を別途持ちまわる必要がないため、非常に開発効率が良いように思えます。

FW標準のDB管理画面が用意されている

管理者ユーザを作成(コマンド:python3 manage.py createsuperuser)し、「admin.py」ファイルを作成することにより、ブラウザ経由でDB管理画面を表示することができる。

以下が管理画面へのログイン画面。
(標準でログイン画面まで利用できる。すごい・・)
管理画面-ログイン.PNG

これが実際の管理画面です。(現在bodyカラムが「テスト」というレコードが登録されてます。)
データの追加/削除等が可能な模様。
管理画面-実際.PNG

管理画面に関してはカスタマイズが可能なようです。
詳細は今後勉強していきます。

Next

入門編を終えたため、今後は簡単なWebアプリケーションを作成する予定です。
Djangoの他標準機能を試運転できるような開発ができればと考えてます。
(案探し中。。)

0
5
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
0
5