DjangoでWebアプリケーションを作成してみる その2(ubuntu18.04、python3.6)

今回はDjangoでWebアプリケーションを作成してみる為に、「モデル設定情報の追加」と「Viewの作成」を行い、ブラウザから接続確認が実施できるところまで行ってみます。

【関連記事】
DjangoでWebアプリケーションを作成してみる その1(ubuntu18.04、python3.6)

 

モデルの設定情報の追加

モデルの設定を行うために「job/models.py」の編集を行います。

モデルを書くときに主キー(id)は自動で生成されるので明示的に定義する必要はありません。

主キーはレコードが登録されるたびに自動採番(1からインクリメント)されます。

また、外部キーの設定などは以下で行います。

「1:1」のリレーション 「OneToOneField」をどちらかに設定することで実現できます。
「n:1」のリレーション 「ForeignKey」のフィールドをnの方に持たせることで実現できます。
「n:n」のリレーション 「ManyToManyField」をどちらかにつけることで、自動的に中間テーブルを作成してくれます。

 

尚、Django2系では on_delete のオプションは必須になっています。

設定は以下の6種類があります。
https://docs.djangoproject.com/ja/2.1/ref/models/fields/#arguments

CASCADE 削除するオブジェクトに紐づいたオブジェクトを全て削除する
PROTECT 関連付けられてるオブジェクトがあると削除できない
SET_NULL オブジェクトが削除されるとNULLを代わりにセット
SET_DEFAULT オブジェクトが削除されるとDefault値を代わりにセット
SET() オブジェクトが削除された際の処理を自身で設定
DO_NOTHING 何もしない

 

さて、モデルを作成した後はデータベースに反映させる為にマイグレーションを行いますが、初期のマイグレーションの状態は以下のようになっています。

 

 

それでは、マイグレーションファイルを作成します。

 

引数として最後にアプリケーション名をつけることができます。
アプリケーション名をつけないと全てのアプリのマイグレーションファイルを作成します。

 

それではマイグレーションを行います。

 

無事、実施できたようなのでマイグレーションの状態を確認します。

 

上記では全てに[X]が設定されていてマイグレーションが実行されているのがわかります。

では、実際のテーブルがどうなっているか、mysqlからテーブルの状態を確認してみます。

 

 

jobのアプリでは「アプリ名_モデル名」という名前で3つのテーブルが作成されました。

尚、主なFieldクラスで作成されるMariaDBのカラムの型は以下のようになります。

BooleanField tinyint(1)
CharField varchar
TextField longtext
IntegerField int(11)
FloatField double
EmailField varchar(200)
URLField varchar(254)
DateField date
DateTime datetime(6)

 

URLFieldとかは下手にリファラーとかを設定すると文字制限を超えてしまいそうですね。

 

Viewの作成

表示部分の設定をする為にViewの作成をします。

モデルと連動すると大変なのでそこは次回に実施し、まずは簡単なテンプレートでの表示だけを行います。

まず、「config/urls.py」を設定します。

 

URL設定で「/job/」で始まるURLの設定はJobアプリの「job.urls」に任せてしまっています。

次に「job/urls.py」を新規で作成します。

 

「app_name = ‘job’」で設定していますが、「app_name」の変数は必ず入れましょう。

そして次にビューの作成を行います。

ビューの作成は関数ベースでもクラスでも実施できますが、クラスを使った書き方を行なっています。

 

 

 

テンプレートの作成

プロジェクトに以下のようなフォルダ構成を作成します。

 

次に以下のテンプレートを作成します。

 

こちらで動作の確認を行ってみます。

環境は「runserver」を起動してテストを行います。

無事、以下の画面が出力されました。

モデルと全く結びついていないので次はその辺りなど実施してみます。