Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
5
Help us understand the problem. What is going on with this article?
@oshiro-pooh

Django入門編を終えた感想

More than 1 year has passed since last update.

はじめに

以下のページを参考に、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の他標準機能を試運転できるような開発ができればと考えてます。
(案探し中。。)

5
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
oshiro-pooh
・Java歴:約4年。 ・現在主流のスクリプト言語に全く触れたことがない状況に危機感を覚え、Pythonの勉強中。今後はDjangoを利用した簡単なWebアプリ制作に取り組む予定。 ・Python技術力(i-lLearning主催のPyhont初心者研修を受講。)

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
5
Help us understand the problem. What is going on with this article?