【django】データベース内にレコードを作成する

 

こんにちは。のっくんです。

 

今日の記事では、Djangoでデータベースにレコードを作成する方法をご紹介します。

 

スポンサーリンク

概要

 

今回の記事では、Pythonのdjangoというフレームワークを使ってデータベースを操作するwebアプリを作ります。

 

使っているバージョンは以下の通りです。

  • Python 3.6
  • django 2.1

 

データベースにはCRUDという概念があります。

 

Create(作成)、Read(読み出し)、Update(更新)、Delete(削除)です。

 

ReadはUpdateしたりDeleteする時に使うものなので、ユーザから見るとCreate:作成、Update:更新、Delete:削除の3つの操作となります。

 

今回はCreate:作成を作ってみましょう。

 

モデル

 

モデルというのは、データベースのカラムを定めるためのものです。モデルを使って、各カラムの変数名や文字列か数値などの属性を定義します。

 

今回の例では、名前、メールアドレス、性別、年齢、誕生日を定義します。

 

models.py

 

フォームの作成

 

djangoのModelFormを使って、データを入力するためのフォームを下記のように作ります。

 

forms.py

 

ビュー

 

定義したフォームをビューの中で使用します。

 

views.py

 

index関数では、全レコードを取得しています。

 

create関数では、ユーザがcreate.htmlにアクセスした時の処理が書かれています。

 

ブラウザでhello/create.htmlにアクセスすると、GETメソッドが使われます。ですので最初のif文には入らず最後のrender関数の処理によってcreateページが表示されます。

 

if文の中の処理は、データが投稿(POST)された時に実行されます。この中では、フォームに記載されたデータと新規に作成したFriendインスタンスをFriendFormに渡します。FriendFormのインスタンスがsaveを実行することで、新しいレコードがデータベースに追加されます。

 

createページの作成

 

それでは、createページを作っていきましょう。このページでは、1.データを入力するためのフォームを表示する、2.投稿するの機能を持たせる必要があります。

 

create.html

 

ブラウザでアクセスすると以下のページが表示されます。

 

 

フォーム欄に内容を記載し、clickを押すとデータが投稿(POST)できます。

 

実行結果

 

試しに適当な値を入力して、データを投稿(POST)してみます。

 

 

id=5が新規に作成できました。

 

内部では、データが投稿されたらビューがデータベースに新しいレコードを作成します。そのあとにredirectを使って上記のindexページに飛ばしています。

 

以上です。皆さんの学習の手助けになれば嬉しいです。

 

ABOUTこの記事をかいた人

のっくん

理系院卒で大企業の研究所に就職。 趣味はプログラミング、レアジョブ英会話、筋トレ、旅行。 Twitter:@yamagablog