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

タイトル: 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 %}
    <ul>
    {% for object in latest_object_list %}
        <li>
            {{ object.field1 }}
            <font color=#ff0000>
                {{ object.field3 }}
            </font>
        </li>
    {% endfor %}
    </ul>
{% else %}
    <p>No objects are available.</p>
{% endif %}

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

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

 

 

5.画面の出力