关于Django中的MVC模型进行图解

首先

我将整理一下Django的处理流程,以便于那些对Django没有接触过的人简单理解。

MVC模型是什么?

MVC模型由模型(Model)、视图(View)、控制器(Controller)这三个元素组成。

要素役割Modelデータベースやファイルなどのデータを管理する役割を持ちます。データの取得や更新、保存などの処理を行います。Viewユーザーが見ることができる画面を表示する役割を持ちます。HTML、CSS、JavaScriptなどを使って画面を構成します。Controllerユーザーからの入力を処理し、ModelとViewを制御する役割を持ちます。Viewからの入力を受け取り、Modelにデータを要求したり、Viewを更新したりします。

以这种方式,MVC模型将应用程序分为三个部分,并且每个部分都承担着特定的角色。通过这种分离,预期可以提高应用程序的可维护性和可扩展性,并且提高开发效率。

关于Django应用程序中的MVC模型

以下是包括脚本名称在内的表格。

要素スクリプト名役割Modelmodels.pyアプリケーション内のデータを管理する役割を持ちます。Djangoでは、models.pyに定義されたモデルが、データベースのテーブルとして生成されます。データの取得や更新、保存などの処理を行います。Djangoのモデルは、オブジェクト関係マッピング(ORM)を利用して、データベースとのやりとりを行います。Viewtemplates
views.pyユーザーが見ることができる画面を表示する役割を持ちます。Djangoでは、views.pyに定義された関数が、URLパターンに応じたビューとして呼び出されます。ビューは、テンプレートエンジンを使って、HTMLなどのファイルをレンダリングし、ユーザーに表示します。
Controllerurls.py, views.pyユーザーからの入力を処理し、ModelとViewを制御する役割を持ちます。Djangoでは、urls.pyに定義されたURLパターンが、views.pyの関数を呼び出す役割を担います。URLパターンに応じたビューを呼び出し、ビューからの入力を受け取り、Modelにデータを要求したり、Viewを更新したりします。

请注意,Controller在urls.py和views.py中都有定义。urls.py负责处理URL模式和视图的关联,而views.py负责实现视图。这样可以将控制器的角色分离出来,提高代码的可复用性。

my_project/
├── my_app/         # アプリケーションのルートディレクトリ
│   ├── __init__.py # Pythonのパッケージとして認識するための空のファイル
│   ├── admin.py    # Djangoの管理画面で表示するモデルの登録や設定を行うファイル
│   ├── apps.py     # アプリケーションの設定を記述するファイル
│   ├── forms.py    # フォームの定義を行うファイル
│   ├── models.py   # アプリケーション内のデータモデルを定義するファイル
│   ├── tests.py    # アプリケーションのテストを定義するファイル
│   ├── urls.py     # アプリケーション内のURLパターンとビューの関連付けを定義するファイル
│   ├── views.py    # ビューの定義を行うファイル
│   └── templates/  # テンプレートファイルを格納するディレクトリ
│       └── my_app/ # アプリケーション別のテンプレートを格納するディレクトリ
│           ├── base.html     # ページの共通部分を定義するためのテンプレートファイル
│           ├── todo_list.html# ToDoリストの一覧表示を行うためのテンプレートファイル
│           └── todo_add.html # ToDoリストの追加を行うためのテンプレートファイル
└── my_project/     # プロジェクトのルートディレクトリ
    ├── __init__.py # Pythonのパッケージとして認識するための空のファイル
    ├── settings.py # プロジェクトの設定を記述するファイル
    ├── urls.py     # プロジェクト全体のURLパターンとアプリケーションのURLパターンを関連付けるファイル
    └── wsgi.py     # プロジェクトをウェブサーバーに接続するためのファイル

一个实施的例子

我将通过提供具体的例子,来解释模型、视图和控制器的作用。

首先,让我们看看Django应用程序的情况。以下是一种管理任务清单应用程序的Model, View, Controller概念图。

    Model: ToDoリストのデータを管理するためのModelを定義します。以下は、ToDoリストのモデルの例です。
from django.db import models

class TodoItem(models.Model):
    title = models.CharField(max_length=100)
    description = models.TextField()
    is_completed = models.BooleanField(default=False)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.title

这个模型负责管理待办列表的标题、描述、完成标志、创建日期和更新日期。

观看

定义用于显示待办事项列表的视图。下面是一个显示待办事项列表的视图示例。

from django.shortcuts import render
from .models import TodoItem

def todo_list(request):
    todo_items = TodoItem.objects.all()
    context = {'todo_items': todo_items}
    return render(request, 'todo_list.html', context)

这个视图从ToDo列表模型中获取数据,创建一个上下文来传递给模板,然后渲染HTML文件。

控制器

定义一个控制器来控制待办事项列表。以下是一个用于添加待办事项的控制器示例。

from django.shortcuts import render, redirect
from .forms import TodoItemForm

def todo_add(request):
    if request.method == 'POST':
        form = TodoItemForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('todo_list')
    else:
        form = TodoItemForm()
    context = {'form': form}
    return render(request, 'todo_add.html', context)

这个控制器从ToDo列表表单中获取数据并保存到模型中。如果保存成功,将重定向到ToDo列表页面。如果保存失败,将重新显示表单。