突然発生した、djangoでのデータベースの編集作業。もはや諦めて一から再度データベースを作り直した記録です。
コンテンツ
環境
Mac | 10.14 |
python | 3.7 |
Eclipse | Version: 2019-06 (4.12) |
前提条件
- mySQL:databaseなし、tableなし
models.py
modelsとは、データベースのテーブルとカラムの定義を対応させ、データベースのレコード1件1けんをモデルクラスのオブジェクトとして扱えるようにする仕組みです。つまり今から書く事がデータベースの定義となるわけです。
これによりinsert/update/deleteなどのSQL 文を一切使わずにレコードを操作することができるようになります。
会員登録フォームは、名前、メール、年齢にしてみる。
1 2 3 4 5 6 7 8 9 10 |
#coding:utf-8 from django.db import models # Create your models here. class Friend(models.Model): name = models.CharField(max_length=100) mail = models.CharField(max_length=100) age = models.IntegerField(default=0) def __str__(self): return '<Friend:id =' + str(self.id) + ',' + self.name + "(" + str(self.age) + ')>' |
forms.py
フォームは、次の2つの大きな役割を持っています。
- ユーザーの入力データを保持
- 入力データのバリデーション(妥当性チェック)を行い、妥当性検証済みのデータやエラーメッセージを保持
1 2 3 4 5 6 7 8 9 |
#coding:utf-8 from django import forms from .models import Friend from foodrescue.models import Friend class FriendForm(forms.ModelForm): class Meta: model = Friend fields =["name", "mail", "age"] |
一番下に書いたfieldsの内容が、URL表示時に反映されることになります。
views.py
ビューの役割は大雑把に言うと、リクエストオブジェクトを受け取ってレスポンスオブジェクトを返すことです。
- htmlページを表示するためのコンテンツを保持したレスポンス
- リダイレクトするためのレスポンス
- エラーを通知するためのレスポンス
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
from django.shortcuts import render, redirect from .forms import FriendForm from .models import Friend from foodrescue.models import Friend from foodrescue.forms import FriendForm def create(request): if request.method == 'post': obj = Friend() friend = FriendForm(request.POST, instance=obj) friend.save() #return render("to=index.html") #return redirect("https://google.co.jp") #⇨これだとgoogleへの絶対パス return redirect(<em>"http://127.0.0.1:8000/"</em>) #⇨ローカル環境のトップ画面への絶対パス #redirect()は、別のURLに飛ばす #renderはテンプレートHTMLに値をバインドしたものをレスポンスとしてブラウザに表示させる params = { 'title': 'Hello' 'form' : FriendForm() } return render(request, 'create.html', params) #key=valueの形式で複数の値を渡す |
データベースの作成
settings.py にてNAMEをとりあえず “sample”と置きます。

作成するデータベース名も settings.py と同じ sample にします。

migrateの実行
migrateがマイグレーションファイルの内容をデータベースに反映してテーブルを作成・変更します

上手くできましたね。
makemigrations アプリ名の実行
makemigrationsがモデルの変更差分をチェックしてマイグレーションファイルを作成します
紫がアプリ名。(既に上でバレていると思うが)

上手くできましたね。
Eclipseにもファイルが作成されました。上手くでない場合は、右クリックからのリフレッシュをします。

Eclipseの画面でも確認をしてみます。


作成されました。Eclipseを一度閉じないと反映されない場合もあります。
もしくはDBViewerを使用の人は右クリックで更新を試してみましょう。
実際に入力してみる
こちらが、htmlで表示される画面になります。

これをクリックします。
EclipseのDBviewer搭載のデータベース画面になります。
無事会員登録されました。

コメントを残す