この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:1
ページ更新者:guest
更新日時:2017-09-15 08:26:36

タイトル: MVCアプリケーション実装例

これはdjangoの簡単なMVCアプリケーション実装例の記事です。

以下に実装例を記載します。

アプリケーション名は「app1」とします。

この実装例はデータベースから値を取り出して画面に表示します。

以下の順序で説明します。

1.Model

2.テーブルのレコード

3.View

4.Template

5.画面の出力

 

1.Modelの定義

\app1\models.py

from django.db import models
from datetime import datetime


class Model1(models.Model):

    field1 = models.CharField(max_length=200)

    field2 = models.IntegerField(default=0)

    field3 = models.DateTimeField(default=datetime.now)

    def __str__(self):
        return self.field1
 

今回の実装例ではfield1field3を画面に出力します。

 

 

2.テーブルのレコード

app1_model1テーブルのレコード一覧

sqlite> select field1, field3 from app1_model1;


field1            field3
----------------  -------------------
This is Object1.  2017-09-15 06:51:38
This is Object2.  2017-09-15 07:30:57
This is Object3.  2017-09-15 08:01:11
This is Object4.  2017-09-15 09:43:03

テーブルに格納されているレコードの確認です。

 

 

3.Viewの定義(通常のMVCではControllerに相当)

\app1\views.py

from django.shortcuts import render
from .models import Model1


def index(request):
    latest_object_list = Model1.objects.order_by('-field3')[:3]
    context = {'latest_object_list': latest_object_list}
    return render(request, 'app1/index.html', context)
 

下記でfield3を降順で3つのオブジェクトを取得しています。

Model1.objects.order_by('-field3')[:3]

下記で取得したオブジェクトをcontext辞書で格納します。

context = {'latest_object_list': latest_object_list}

下記で表示するTemplatecontextを返却しています。

render(request, 'app1/index.html', context)

 

 

4.Templateの定義

\app1\templates\app1\index.html

{% if latest_object_list %}
   


  •     {% for object in latest_object_list %}
           

  •             {{ object.field1 }}
               
                    {{ object.field3 }}
               
           

  •     {% endfor %}
       

{% else %}
   

No objects are available.


{% endif %}

 

contextに格納された「latest_object_list」を for文で 1つずつ「object」として取り出しています。

「object」のカラムである「field1」と「field3」を画面に表示します。

 

 

5.画面の出力