2.

djangoにおけるMVCアプリケーション実装例

ページの作成
テンプレートを更新

ページの作成

親となるページを選択してください。

ページは必ず何かしらの親ページに紐づきます。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球

子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール

親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!

これは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.画面の出力

子ページ
子ページはありません
同階層のページ
  1. チュートリアル:電卓の作成
  2. MVCアプリケーション実装例

最近の質問

コメント一覧

コメントがありません

ログインしなければコメント投稿はできません。