茨城エンジニアのPython開発日記

茨城のITベンチャー企業ではたらく2年目エンジニア。Pythonで色々なものを作成中。

djangoでデータベースを作成, adminサイトから情報を入力してみた


ブログから記事を見つけたい場合はこちら

ブログ地図 - 茨城エンジニアのPython開発日記


こんにちは松原です。
東京リベンジャーズをみました。
マイキーかっこいい。二期早くしてほしい。

0. 概要

さて今日は、djangoからデータベースを作成, アクセスする方法を見ていきます。
会社の機材管理表くらいのデータベース&見た目を何回かに分けて作っていく予定。
見栄えがいいものが出来るのはまだまだ先ですので、要素勉強くらいに見てください。


djangoではデータベースにアクセスする方法として、

1. djangoが用意してくれているadminサイトからアクセス
2. 自分で作成したWebサイト上でアクセス

の2通りがあるようです。
もちろん最終的に目指したいのは2番。
ユーザーが登録したり更新したりをサイト上で出来るようにしていく必要があります。

ちなみにadminサイトは、プロジェクト作成時urls.pyに初めから登録されています。
リリースするときは、不正アクセスされないようにURLを複雑にしておきましょう。
f:id:tottorisnow33:20211120115930p:plain

とりあえず今回は、データベースへの登録をadminからやっていきます。
作る流れとしては、

データベースに情報をadminから登録
→Weサイト上からデータベース内容を見られるようにする
→Webサイト上からデータベース内容を登録, 変更できるようにする
→見た目をきれいにする

でいこうかと。
で、今回はadminからデータベースに情報を登録していきます。

0. 概要

adminからデータベースにアクセスする手順は以下

1. models.pyにデータベースの形(どんな表なのか)を記入
2. djangoにデータベースの形を覚えてもらい作成(migration)
3. スーパーユーザーを作成
4. adminサイトにアクセス、データベース操作

プロジェクト作成やアプリ作成については前回のものを見てください。

1. データベースの形を作成

まずはデータベースの形を自分で記入。
自分がメインでやっていたCの記法に置き換えると、構造体の型を作るイメージ。

こんな感じに、アプリ内のmodels.pyに「こんな情報が入ったデータベースにしてね」と仕様を書いてあげます。

from django.db import models

# Create your models here.
class KizaiStatus(models.Model):
    kizai_name = models.CharField(max_length=100)
    using_person_name = models.CharField(max_length=100)
    user_memo = models.TextField()

あと、プロジェクトに「このアプリも対象にしといて」と教えてあげます。
プロジェクトのsettings.pyの一部を変更

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'kizai_kanri_app'
]

また、アプリのadmin.pyで、このmodelをadminサイトで取り扱うよと教えてあげます。

from django.contrib import admin
from .models import KizaiStatus

# Register your models here.
admin.site.register(KizaiStatus)

2. djangoにデータベースの形を覚えてもらい作成

先ほど指定したデータベースの表の形を、djangoに教えてあげて実際にデータベースを作成してもらいます。
manage.pyのあるディレクトリでこれ

python manage.py makemigrations

その後にこれ

python manage.py migrate

その時点での表の形をメモして、その情報を利用してデータベース作成してるみたいですね。
makemigrationの時点で、中間生成物として0001_initial.pyのようなファイルを作成していて、その時点での表の形を中間生成物として出力しているとのこと。

これでdjangoがデータベースの形を覚えました。喜ばしい。

3. スーパーユーザーを作成

adminサイトに入れるユーザーをdjangoに覚えてもらいます。
データベースを簡単に閲覧, 変更できるサイトに誰でも入れたら大変なので。

manage.pyのあるディレクトリでこれ。

python manage.py createsuperuser

こんな感じになる。
f:id:tottorisnow33:20211120124833p:plain

4. adminサイトにアクセス、データベース操作

ローカルサーバを立てる

python manage.py runserver

adminサイトへ行って先ほど作ったスーパーユーザーの情報でログイン。
ちなみにURLはurls.pyで設定しているadminサイトのURL。
デフォルトなら( http://127.0.0.1:8000/admin )になるはず。

f:id:tottorisnow33:20211120125133p:plain

ログインすると、こんな感じにデータベースに登録できます。

f:id:tottorisnow33:20211120125850p:plain
f:id:tottorisnow33:20211120125949p:plain

データベースに色々入力して、自分で作成したWebサイトからも登録, 変更できるとよいですね。
という訳でデータベースの表作成→adminサイトから情報登録までの流れでした。

頭こんがらがりそうだけど、慣れたら便利そう。
というかどっかでdjango3に移行しないとなあ。

それではまた次回。